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>就没问题了。

posted on 2016-03-18 20:45  筷七拍  阅读(210)  评论(0编辑  收藏  举报

导航