c++学习中的疑问
1.关于iostream头文件中的cout对象没有包含对string的<<操作符重载函数
测试代码:
1 #include<iostream> 2 using namespace std; 3 4 int main(){ 5 string a = "av"; 6 cout << a << endl; 7 8 system("pause"); 9 return 0; 10 }
这里vs2013会报错,错误信息是
IntelliSense: 没有与这些操作数匹配的 "<<" 运算符
操作数类型为: std::ostream << std::string
猜想解释:
虽然iostream包含了string头文件的部分内容,使得不用#include<string>就能使用string对象,但是iostream头文件中的cout对string的<<重载运算符函数写在了<string>里面了,并没有写在iostream里面。暂时不懂这样设计的原因。
解决方法:
只要加上#include<string>就没问题了。