一直用c比较习惯,最近开始学C++,一开始就遇到了问题。如下的简单程序,string的使用。
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
string str;
cin >> str;
for (auto c : str)
cout << c << endl;
}
VS提示错误如下:
错误 1 error C2679: 二进制“>>”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换) c:\users\likai\documents\visual studio 2013\projects\容器\容器\源.cpp 7 1 容器2 IntelliSense: 没有与这些操作数匹配的 ">>" 运算符
操作数类型为: std::istream >> std::string c:\Users\likai\Documents\Visual Studio 2013\Projects\容器\容器\源.cpp 7 6 容器
仔细查看后,是自己将C中的string,h头文件在C++中使用,在C++中,string和string.h文件可以同时存在,string.h是C中的头文件。而在C++中误认为可行,导致运算符对>>对string不能辨别。所以应在C++中避免包括C标准库中的.h文件。