Мне надо из файла, все что находится между тегами <Title type="string"> и </Title>, ну допустим вывести на экран. Поидейно, конструкция должна работать, он находит iPosBegin, корректно, так же находит iPosEnd, тоже корректно, т.е. если из первого вычесть второе — это нам и надо, ну, не суть, Вся проблема в том, что я немного не понимаю, почему когда дело доходит до
tString.assign(sTemplate,iPosBegin+21,iPosEnd);
Он начало вырезает правильно в перменную tString, но на этом не оставнавливается а загоняет туда все что остается?
Помогите, плиз!
Вот код, творчески порезанный:
Здравствуйте, ginger, Вы писали:
G>Мне надо из файла, все что находится между тегами <Title type="string"> и </Title>, ну допустим вывести на экран. Поидейно, конструкция должна работать, он находит iPosBegin, корректно, так же находит iPosEnd, тоже корректно, т.е. если из первого вычесть второе — это нам и надо, ну, не суть, Вся проблема в том, что я немного не понимаю, почему когда дело доходит до G>tString.assign(sTemplate,iPosBegin+21,iPosEnd); G>Он начало вырезает правильно в перменную tString, но на этом не оставнавливается а загоняет туда все что остается? G>Помогите, плиз! G>Вот код, творчески порезанный:
[мощный код поскипан]
может быть лучше воспользоваться boost::spirit? геморроя будет на порядок меньше...
Здравствуйте, _AK_, Вы писали:
_AK>Здравствуйте, ginger, Вы писали:
G>>Мне надо из файла, все что находится между тегами <Title type="string"> и </Title>, ну допустим вывести на экран. Поидейно, конструкция должна работать, он находит iPosBegin, корректно, так же находит iPosEnd, тоже корректно, т.е. если из первого вычесть второе — это нам и надо, ну, не суть, Вся проблема в том, что я немного не понимаю, почему когда дело доходит до G>>tString.assign(sTemplate,iPosBegin+21,iPosEnd); G>>Он начало вырезает правильно в перменную tString, но на этом не оставнавливается а загоняет туда все что остается? G>>Помогите, плиз! G>>Вот код, творчески порезанный:
_AK>[мощный код поскипан]
_AK>может быть лучше воспользоваться boost::spirit? геморроя будет на порядок меньше...
"Не стреляйте в пианиста он играет как умеет" (цы)
Я не так давно пишу на Си, что это? :-)
Здравствуйте, ginger, Вы писали:
G>Здравствуйте, _AK_, Вы писали:
_AK>>Здравствуйте, ginger, Вы писали:
G>>>Мне надо из файла, все что находится между тегами <Title type="string"> и </Title>, ну допустим вывести на экран. Поидейно, конструкция должна работать, он находит iPosBegin, корректно, так же находит iPosEnd, тоже корректно, т.е. если из первого вычесть второе — это нам и надо, ну, не суть, Вся проблема в том, что я немного не понимаю, почему когда дело доходит до G>>>tString.assign(sTemplate,iPosBegin+21,iPosEnd); G>>>Он начало вырезает правильно в перменную tString, но на этом не оставнавливается а загоняет туда все что остается? G>>>Помогите, плиз! G>>>Вот код, творчески порезанный:
_AK>>[мощный код поскипан]
_AK>>может быть лучше воспользоваться boost::spirit? геморроя будет на порядок меньше...
G>"Не стреляйте в пианиста он играет как умеет" (цы) G>Я не так давно пишу на Си, что это?
Здравствуйте, _AK_, Вы писали: G>>>>Мне надо из файла, все что находится между тегами <Title type="string"> и </Title>, ну допустим вывести на экран. Поидейно, конструкция должна работать, он находит iPosBegin, корректно, так же находит iPosEnd, тоже корректно, т.е. если из первого вычесть второе — это нам и надо, ну, не суть, Вся проблема в том, что я немного не понимаю, почему когда дело доходит до G>>>>tString.assign(sTemplate,iPosBegin+21,iPosEnd); G>>>>Он начало вырезает правильно в перменную tString, но на этом не оставнавливается а загоняет туда все что остается? G>>>>Помогите, плиз! G>>>>Вот код, творчески порезанный: _AK>>>[мощный код поскипан] _AK>>>может быть лучше воспользоваться boost::spirit? геморроя будет на порядок меньше... G>>"Не стреляйте в пианиста он играет как умеет" (цы) G>>Я не так давно пишу на Си, что это? :-) _AK>http://www.boost.org/libs/spirit/doc/quick_start.html _AK>смотри внизу пример.
А все-таки, почему не работает мой код? Интересно же, что бы больше на такие грабли не наступать?
G>tString.assign(sTemplate,iPosBegin+21,iPosEnd); G>Он начало вырезает правильно в перменную tString, но на этом не оставнавливается а загоняет туда все что остается?
Причина кроется в том, что Вы не правильно понимаете смысл третьего параметра:
const char* w = "hello, world";
std::string s;
// начальная позиция
std::string::size_type pos = 7;
// количество символов
std::string::size_type n = 5;
// следующее присваивание помещает в s, начиная с 7 позиции (нумерация с 0), 5 символов
s.assign(w, pos, n);
// на выходе получаем world
std::cout << s;