2011-01-26 5 views
2

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

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

На Wikipedia он упоминает следующее о << и >>:

В контексте iostreams, авторы часто ссылаются на ​<< и ​>> в качестве операторов «put-to» или «stream insertion» и «get-from» или «stream extract» соответственно.

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

Спасибо.

ответ

1

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

1

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

3

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

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

+0

+1, следует также отметить, что в этом случае оператор '<<' возвращает поток, который был его первым аргументом, что и позволяет вам их связывать. – tobyodavies

1

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

Смежные вопросы