Синтаксис:
#include <sstream> void str( const string& s ); string str();
Функция str() может использоваться двумя способами. Первый способ: она может использоваться для получения копии строки, управляемой текущим стоковым потоком. Это очень удобно для вывода строк.
Например:
ostringstream stream1; stream1 << "Testing!" << endl; cout << stream1.str();
Второй способ: функция используется для копирования строки в поток. Это очень удобно для ввода строк.
Пример:
istringstream stream1; string string1 = "25"; stream1.str(string1);
Обратите внимание, эта операция оставляет указатели «get» и «put» со значениями 0. Это может привести к плачевным результатам при инициализации строкового потока stringstream, используемого для двунаправленных операций.
str() так же удобен, когда вам нужно очистить или сбросить поток, поэтому можно повториться:
ВНИМАНИЕ: функция clear() не стирает содержимое лежащего в основе строкового объекта, она только очищает состояние объекта ios, т.е. вызывает basic_ios::clear().
istringstream stream1; float num; // использование в первый раз string string1 = "25 1 3.235\n1111111\n222222"; stream1.str(string1); while( stream1 >> num ) cout << "num: " << num << endl; // displays numbers, one per line // использование того же строкового потока с str() string string2 = "1 2 3 4 5 6 7 8 9 10"; stream1.clear(); // not what you think! But still required to clear the stream's IO state stream1.str(string2); while( stream1 >> num ) cout << "num: " << num << endl; // displays numbers, one per line
Смотрите также: rdbuf, C++ I/O Streams