Как очистить std :: string? [Дубликат]

0

Эта часть моего кода работает в бесконечном цикле и показывает число, но мне нужно очистить строку после использования, потому что, поскольку она запускается в цикле, она продолжает умножаться. (Извините за мой английский, это не мой родной язык)

текст ---> текст текста → текст текста текст

cartemap << "Carte: " << currentmap;  //cartemap is a std:string currentmap a integer'

MESSAGE1 = TTF_RenderText_Solid( font,  cartemap.str().c_str() , noir );

apply_surface( 70, 70, MESSAGE1, SCREEN );

SDL_FreeSurface(MESSAGE1);
  • 0
    str = "" [morechars]
  • 2
    cartemap не является std::string . std::string не имеет функции-члена с именем str . Похоже, это std::ostringstream .
Показать ещё 1 комментарий
Теги:
iostream

3 ответа

5

Отвечая на вопрос в заголовке

Вызовите std::string::clear() чтобы очистить string:

mystring.clear();

Ответ на код в сообщении

Но похоже, что вам нужен std::ostringstream::str() чтобы очистить ostringstream (или stringstream) в вашем примере:

cartemap.str("");
  • 0
    Это не работает, он продолжает добавляться
  • 0
    @ user3105169: Кажется, вы хотите очистить ostringstream , а не string . Я обновил свой ответ, чтобы учесть оба.
Показать ещё 1 комментарий
1

AFAICT из вашего фрагмента, cartemap не является std::string, но это std::stringstream или аналогичный. Чтобы очистить поток строк, выполните

cartemap.str("");
  • 0
    Вы правы! я сделал ошибку, я не прочитал поток в конце, когда он прошел через мою голову ... Спасибо!
1

Если cartemap - ваша строка, попробуйте следующее:

cartemap.resize(0);

http://www.cplusplus.com/reference/string/string/resize/

  • 1
    Это дало мне следующее: «struct std :: stringstream» не имеет члена с именем «resize» |

Ещё вопросы

Сообщество Overcoder
Наверх
Меню