C ++ << >> операторы - PullRequest
       17

C ++ << >> операторы

2 голосов
/ 26 января 2011

Я могу использовать, например, оператор << для ввода моего имени следующим образом:

std::cout<<"My name is: "<<name<<std::endl;

В Википедии упоминается следующее относительно << и >>:

В контексте iostreams авторы часто ссылаются на ​<< и ​>> как операторы «вставки» или «вставки потока» и «получения от» или «извлечения потока» соответственно.

В приведенном выше примере кода << не выполняет конкатенацию ? Есть ли в сцеплении специальный оператор в C ++?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 26 января 2011

Ничто не имеет специального оператора в C ++. std::ios (его производное) неправильно используется operator>> и operator<< для обеспечения простого способа выполнения потоковой операции: в противном случае эти два оператора имеют различную семантику в C ++.

Оператор, используемый для объединения двух std::string, - это operator+ (но я думаю, что в этом случае они не неправильно использовали это: operator+ между двумя строками делает то, что я ожидал ).

1 голос
/ 26 января 2011

В контексте iostreams operator << вставляет данные в поток.То, что поток делает с этим, является совершенно другой историей.Он может объединять строки (как в случае std::stringstream), но может также делать что-то совершенно другое.

1 голос
/ 26 января 2011

Если вы объединяете, вы должны использовать operator +.Но, как говорит @tsellon, ваш пример, с технической точки зрения, не является конкатенацией - он последовательно записывает в поток.Может быть, разница кажется абстрактной, но последствия очень реальны.

1 голос
/ 26 января 2011

В этом случае конкатенация фактически не происходит.Вместо этого каждая строка записывается, в свою очередь, в выходной поток.В этом случае этот поток оказывается стандартным.

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