2013-11-06 12 views
4

Так как я не могу найти что-либо в Google из-за того, что они почему-то не принимают термин «>>», я решил спросить здесь.«<</>>« Операторы в C++

Первый, нет, я не имею в виду оператор побитового сдвига. Это другое. Я видел, как это происходит в некотором коде, и это не имело бы смысла, если бы это был оператор сдвига.

cout << a; будет примером. Я знаю, что это печатает, но что такое определение «< <»?

Или в моем случае, у меня есть код похож на это:

for(int index=0;index<n;index++) 
    inputFile >> StringArray[index]; 

Что это значит?

+1

они называются операторами потоков, которые используются для ввода или извлечения данных из потоков ввода-вывода. – Praveen

ответ

8

Оператор бит-сдвига часто перегружен, чтобы означать считывание значений и запись в потоки.

Редактировать: немного более подробно, C++ позволяет перегрузить или изменить значение почти любого оператора. Операторы << и >> были выбраны для перегрузки для записи/чтения в источник или приемник данных, поскольку они визуально выглядят как стрелки или кабелепроводы. Существует нулевая общность с сдвигающими битами, кроме того, какой оператор используется.

+0

Пожалуйста, объясните более подробно. – spurra

+0

Вы знакомы с перегрузкой оператора? – yan

+0

@BannanaCode: дополнительная информация о перегрузке оператора: http://stackoverflow.com/questions/4421706/operator-overloading – rozina

1

Они побитовое смещение перегруженные операторы, как правило, называют «поток операторов» я не знаю в деталях, но, как вы сказали,

cout<<a; 

выводит значение а, что он помещает значение а в выходной поток, который отображается на экране.

И в случае

inputfile>>variable; 

Вы читаете данные из файла в переменную.

1

Это, как вы сказали, называются побитовыми операторами.

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

Фактически вы можете перегрузить любого оператора, чтобы делать все, что хотите на объекте. Пример можно найти: here.

Cheers.

PS: Концепция вокруг этих операторов легко визуализируется. Когда вы пишете:

cout << "Hello world"; 

с немного воображения, можно сказать, что вы «поставить» строку на право на cout поток слева (при этом левая направлена ​​«стрелки»).То же самое, когда вы пишете:

std::string str; 
cin >> str; 

вы могли себе представить, что вы извлечь строку из cin потока слева и «положить» его на str переменной справа (при этом правая направлена ​​«стрелки»).

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