Возможный дубликат:
Какова цель строкового конструктора ostringstream?
Я сталкиваюсь с проблемой ниже.
У меня есть Ostringstream сказать TestStr.
Сначала я вставляю в него несколько символов, используя <<
testStr << somechar;
Затем я изменил:
testStr.Str("some string")
так что теперь testStr содержит «Some String»
Теперь я хочу добавить несколько символов (скажем, «» и «ТЕСТ») в конце, чтобы они могли стать «Некоторым тестом строки».
testStr << " " << "TEST";
Но я получаю «TESTString».
Пожалуйста, дайте мне знать, что можно сделать?
Добавление примера кода:
#include <iostream>
#include <sstream>
int main() {
std::ostringstream s;
s << "Hello";
s.str("WorldIsBeautiful");
s << " " << "ENDS";
std::cout << s.str() << std::endl;
}
Выход «ENDSIsBeautiful», где, как я и ожидал, «WorldIsBeautiful ENDS».
Я не слишком уверен, но похоже, что он все еще собирается писать в начале. Чтобы это исправить, вы можете позвонить s.seekp
(0, std::ios_base::end);
установить индикатор выходного положения обратно в конец. У меня есть рабочий образец Вот:
#include <iostream>
#include <sstream>
int main() {
std::ostringstream s;
s.str( "Hello" );
s.seekp(0, std::ios_base::end);
s << "x" << "World";
std::cout << s.str() << std::endl;
}
Выход:
HelloxWorld
Других решений пока нет …