c++学习中的疑问

时间:2024-12-24 21:07:08

1.关于iostream头文件中的cout对象没有包含对string的<<操作符重载函数

测试代码:

 #include<iostream>
using namespace std; int main(){
string a = "av";
cout << a << endl; system("pause");
return ;
}

这里vs2013会报错,错误信息是

IntelliSense: 没有与这些操作数匹配的 "<<" 运算符
  操作数类型为: std::ostream << std::string

猜想解释:

 虽然iostream包含了string头文件的部分内容,使得不用#include<string>就能使用string对象,但是iostream头文件中的cout对string的<<重载运算符函数写在了<string>里面了,并没有写在iostream里面。暂时不懂这样设计的原因。
解决方法:
只要加上#include<string>就没问题了。