При попытке объединить строку в ostringstream, содержимое строки которой изменено и реконструировано, строка добавляется в начале

Возможный дубликат:
Какова цель строкового конструктора 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».

1

Решение

Я не слишком уверен, но похоже, что он все еще собирается писать в начале. Чтобы это исправить, вы можете позвонить 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
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]