在VC6.0中写了下边的代码。
#include<iostream>
#include<string>
#include<vector>
using std::vector;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string st1;
vector<string> text;
while(cin>>st1){
text.push_back(st1);
}
for(vector<string>::iterator i = text.begin(); i != text.end(); ++i){
cout<<*i<<endl;
}
return 0;
}
提示错误,提示信息为
error C2653: 'vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char
error C2065: 'iterator' : undeclared identifier
等等
这段代码在vs2010中可以运行。通过上网查找原因,可能是VC6.0对STL支持很独特,有两种修改方法:
- 用 using namespace std。即
#include<iostream> #include<string> #include<vector> using namespace std; int main() { //body }
- 声明iterator时,使用 std::vector<string>::iterator i。即
#include<iostream> #include<string> #include<vector> using std::vector; using std::cin; using std::cout; using std::endl; using std::string; int main() { //body for(std::vector<string>::iterator i = text.begin(); i != text.end(); ++i){ cout<<*i<<endl; } return 0; }
由此可见,学习STL时,最好不要用VC6.0。而是选用更新的版本,如vs2010。
参考链接:
http://bymeok.blog.163.com/blog/static/118658132200951454028488/