在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/
本文探讨了在VC6.0环境中编写使用STL标准库的C++程序时遇到的兼容性问题,并提供了两种解决方案。一种是引入using namespace std;另一种是在声明迭代器时使用完全限定名称。
886

被折叠的 条评论
为什么被折叠?



