std::cout输出int时出现编译错误



在我的程序中,我尝试让用户输入一个std::string,然后将该字符串的长度存储在一个变量中并打印该变量。但是,我会遇到编译错误。这是我的代码:

#include <iostream>
#include <string>
int main(){
std::string str;
std::cin >> str;
int len = str.length();
std::cout >> len;
return 0;
}

以下是我收到的错误:

||===生成文件:"无项目"中的"无目标"(编译器:未知)===|D: \C(初学者)\p回文.cpp | |在函数'int main()'中:|D: \C(初学者)\p回文.cpp|11|错误:"operator>>"不匹配(操作数类型为"std::ostream{aka std::basic_stream<char>}"one_answers"int")|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|808|注意:候选者:template<class _Traits>std::basic_stream<char,_Traits>&std::operator>>(std::basic_stream<char,_Taits>&,带符号的char*)|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|808|注意:模板参数推导/替换失败:|D: \C(初学者)\p回文.cpp|11|注意:"std::ostream{aka std::basic_stream<char>}"不是从"std:;char,_Traits>'|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|803|注意:候选者:template<class _Traits>std::basic_stream<char,_Traits>&std::operator>>(std::basic_stream<char,_Taits>&,unsigned char*)|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|803|注意:模板参数推导/替换失败:|D: \C(初学者)\p回文.cpp|11|注意:"std::ostream{aka std::basic_stream<char>}"不是从"std:;char,_Traits>'|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|761|注意:候选者:template<class _Traits>std::basic_stream<char,_Traits>&std::operator>>(std::basic_stream<char,_Taits>&,带符号的char&)|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|761|注意:模板参数推导/替换失败:|D: \C(初学者)\p回文.cpp|11|注意:"std::ostream{aka std::basic_stream<char>}"不是从"std:;char,_Traits>'|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|756|注意:候选者:template<class _Traits>std::basic_stream<char,_Traits>&std::operator>>(std::basic_istream<char,_Taits>&,unsigned char&)|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\istream|756|注意:模板参数推导/替换失败:|D: \C(初学者)\p回文.cpp|11|注意:"std::ostream{aka std::basic_stream<char>}"不是从"std:;char,_Traits>'|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\bits\istream.tcc|923|注意:候选者:template<class _CharT,class _Traits>std::basic_stream&lt_CharT,_Traits>&std::运算符>>(std::basic_stream<_CharT,_Taits>&,_CharT&)|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\bits\istream.tcc|923|注意:模板参数推导/替换失败:|D: \C(初学者)\p回文.cpp|11|注意:"std::ostream{aka std::basic_stream<char>}"不是从"std:_CharT,_Traits>'|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\bits\istream.tcc|955|注意:候选者:template<class _CharT2,class _Traits2>std::basic_stream&lt_CharT,_Traits>&std::运算符>>(std::basic_istream<_CharT,_Taits>&,_CharT2*)|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\bits\istream.tcc|955|注意:模板参数推导/替换失败:|D: \C(初学者)\p回文.cpp|11|注意:"std::ostream{aka std::basic_stream<char>}"不是从"std:_CharT,_Traits>'|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\bits\basic_string.tcc|1441|注意:候选者:template<class _CharT,class _Traits,class _Alloc>std::basic_stream&lt_CharT,_Traits>&std::运算符>>(std::basic_stream<_CharT,_Taits>&,std::__cxx11::basic_string<_CharT,_Traits,_Alloc>&)|C: \Program Files(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\C++\bits\basic_string.tcc|1441|注意:模板参数推导/替换失败:|D: \C(初学者)\p回文.cpp|11|注意:"std::ostream{aka std::basic_stream<char>}"不是从"std:_CharT,_Traits>'|||===生成失败:1个错误,0个警告(0分钟,0秒)===|

正确的代码是std::cout << len,但您编写的是std::cout >> len

换句话说,您使用了错误的运算符。>>运算符用于std::cin,而不是std::cout

记住这一点的一个好方法是查看箭头指向的方向。对于std::cin,箭头指向变量,因为计算机正在将输入写入变量。对于std::cout,向左的箭头表示对cout的写入输出。

这解释了您收到的第一个错误:

error: no match for 'operator>>' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'int')|

错误表明操作数类型std::ostream(std::cout是其一部分)没有运算符>>

std::cout << len

最新更新