我有这个简单的代码,但我不知道这一切的错误在哪里
#include <iostream.h>
#include <fstream.h>
#include <string.h>
using namespace std;
int main(){
string s;
cout<<"Entrer nom de fichier avec le source";
cin s;
ifstream fout;
fout.open(s);
s=fout.getche();
fout.close();
cout<<s;
return 0;
}
导致编译后显示的错误为:
d:\workespace3.cpp(5) : error C2871: 'std' : does not exist or is not a namespace
d:\workespace3.cpp(8) : error C2653: 'std' : is not a class or namespace name
d:\workespace3.cpp(8) : error C2065: 'string' : undeclared identifier
d:\workespace3.cpp(8) : error C2146: syntax error : missing ';' before identifier 's'
d:\workespace3.cpp(8) : error C2065: 's' : undeclared identifier
d:\workespace3.cpp(10) : error C2146: syntax error : missing ';' before identifier 's'
d:\workespace3.cpp(13) : error C2039: 'getche' : is not a member of 'ifstream'
c:\program files (x86)\microsoft visual studio\vc98\include\fstream.h(98) : see declaration of 'ifstream'
Error executing cl.exe.
workespace3.obj - 7 error(s), 0 warning(s)
答案 0 :(得分:1)
不要使用包含文件的.h
形式,这些形式是为了向后兼容C.例如#include <string>
。
答案 1 :(得分:1)
您有很多错误:
1-您正在使用已弃用的头文件。标准C ++库头文件没有“.h”标题。那就是:
#include <iostream>
#include <fstream>
#include <string>
2- getche()不是ifstream的正确方法。以下是ifstream的完整方法列表:
http://www.cplusplus.com/reference/fstream/ifstream/
你可能想要使用get()或getline()
3-您缺少“&gt;&gt;”在“cin”和“s”之间。
4-您使用的是非常旧的IDE。有多个更新和免费的IDE。值得注意的是,您可以免费获得VC ++ 2012 Express。它将更符合标准,还包括更好的工具和对C ++ 11的支持
答案 2 :(得分:1)
如果编译器支持C ++ 98标准头文件,那么使用它们
#include <iostream> // no .h
如果它只支持您所包含的古老的前ISO标题,那么请不要提及namespace std
。在那些黑暗的日子里,标准库只是被转储到全局命名空间中。
我会考虑使用这个千年的编译器;你会发现从20世纪90年代的记忆不够完美的人那里得到帮助会更容易。