Что такое классы "string", "stream" и "stringstream" в C ++? - PullRequest
13 голосов
/ 23 ноября 2008

Я хочу знать, в чем разница между строкой и потоком в c ++, и в чем заключается поток строк?

Ответы [ 4 ]

8 голосов
/ 23 ноября 2008
  • istream и ostream: интерфейсы для потоковой передачи данных (файлы, сокеты и т. Д.)
  • istringstream: istream, который оборачивает строку и предлагает ее содержимое
  • ostringstream: ostream, который сохраняет записанное в нем содержимое в виде строки

Пример:

istringstream datastream("1 2 3");

int val;
datastream >> val;
cout << val << endl; // prints 1

datastream >> val;
cout << val << endl; // prints 2

datastream >> val;
cout << val << endl; // prints 3


ostringstream outstream;
outstream << 1 << "+" << 2 << "=" << 3;
cout << outstream.str() << endl; // prints "1+2=3"
5 голосов
/ 23 ноября 2008

Очень неформально: строка представляет собой набор символов, поток - это инструмент для управления перемещением данных. Поток строк - это класс c ++, который позволяет использовать строку в качестве источника и места назначения данных для потока.

3 голосов
/ 23 ноября 2008

Я предполагаю, что поток строк подобен iostream, но вместо записи или чтения из файла вы пишете или читаете из строки.

1 голос
/ 23 ноября 2008

В C и / или Unix основной метафорой был файл. Стандартные, стандартные входные сетевые сокеты были представлены с использованием файловых дескрипторов. Таким образом, вы можете использовать fprintf() для записи в эти «файлы», не зная, что на самом деле под ними.

В качестве более безопасной и прохладной альтернативы C ++ представил iostream в качестве базовой метафоры, почти встроенной в язык с использованием оператора <<. Опять же, файлы, строки и (с библиотекой) сеть могут быть доступны с помощью потоков, не зная, что это такое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...