在VS2015中,有如下代码
string a = "123";
cout << a;
此时,在“<<”下有红色的曲线显示错误,给出的错误提示为“没有与这些操作数匹配的“<<”操作符,操作数类型为:std::ostream<<std::string。”
1 string类
string类是C++的标准库类型,表示可变长的字符序列。作为标准库的一部分,string定义在命名空间std中。string类与char*比较起来,不必担心内存是否足够、字符串长度等问题,因此,使用string类比char*更安全。
2 头文件string与string.h
在《C++中带.h与不带.h的头文件》中提到,标准化后的C++头文件都不包含后缀名,例如iostream.h是标准化前的头文件,其对应的标准化后的文件为iostream。但是头文件string与头文件string.h却不是这种标准化前后的对应关系。string.h头文件是C语言的头文件,包含了基于char*的字符串处理函数,而string头文件是C++头文件,在该头文件中定义了string类。
string类是在头文件string中定义。因此,在使用string类时,必须包含该头文件。所以,当使用cout输出string类的对象报错的主要原因就是程序中没有包含头文件string。