我怎样才能在VC ++ 6.0上解决这个问题

时间:2013-12-06 17:40:33

标签: c++

我有这个简单的代码,但我不知道这一切的错误在哪里

#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)

3 个答案:

答案 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年代的记忆不够完美的人那里得到帮助会更容易。