С++ для начинающих

       

Строковые потоки


Библиотека iostream поддерживает операции над строковыми объектами в памяти. Класс ostringstream вставляет символы в строку, istringstream читает символы из строкового объекта, а stringstream может использоваться как для чтения, так и для записи. Чтобы работать со строковым потоком, в программу необходимо включить заголовочный файл

#include <sstream>

Например, следующая функция читает весь файл alice_emma в объект buf класса ostringstream. Размер buf увеличивается по мере необходимости, чтобы вместить все символы:

#include <string>

#include <fstream>

#include <sstream>

string read_file_into_string()

{

           ifstream ifile( "alice_emma" );

           ostringstream buf;

           char ch;

           while ( buf && ifile.get( ch ))

                   buf.put( ch );



           return buf.str();

}

Функция-член str() возвращает строку – объект класса string, ассоциированный со строковым потоком ostringstream. Этой строкой можно манипулировать так же, как и “обычным” объектом класса string. Например, в следующей программе text почленно инициализируется строкой, ассоциированной с buf:

int main()

{

           string text = read_file_into_string();

           // запомнить позиции каждого символа новой строки

           vector< string::size_type > lines_of_text;

           string::size_type pos = 0;

           while ( pos != string::npos )

           {

                  pos = text.find( '\n' pos );

                  lines_of_text.push_back( pos );

           }

           // ...

}

Объект класса ostringstream можно использовать для автоматического форматирования составной строки, т.е. строки, составленной из данных разных типов. Так, следующий оператор вывода автоматически преобразует любой арифметический тип в соответствующее строковое представление, поэтому заботиться о выделении нужного количества памяти нет необходимости:

#include <iostream>

#include <sstream>



Содержание раздела