C++ - 将FILE*转换为CHAR*

Jam*_*oks 0 c++ file char

我找到了一个C++源文件,它从命令行参数(argv [1])计算表达式,但我现在想要将其更改为读取文件.

double Utvardering(char* s) {
srcPos = s;
searchToken();
return PlusMinus();
}

int main(int argc, char* argv[]) {
if (argc > 1) {
    FILE* fFile = fopen(argv[1], "r");
    double Value = Utvardering(fopen(argv[1], "r"));
    cout << Value << endl;
}else{
    cout << "Usage: " << argv[0] << " FILE" << endl;
}
cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是Utvardering函数需要char*参数.如何将从文件读取的数据转换为f*?

ral*_*nja 6

使用fread()函数将数据从FILE*读入缓冲区.将该缓冲区发送到Utvardering().


Igo*_*kon 6

函数fopen只是打开一个文件.要从那里获取字符串,您需要读取该文件.有不同的方法来实现这一目标.如果您事先知道字符串的最大大小,则可以:

const int MAX_SIZE = 1024;
char buf[MAX_SIZE];
if (!fgets(buf, MAX_SIZE, fFile) {
  cerr << "Read error";
  exit(1);
}
double Value = Utvardering(buf);
Run Code Online (Sandbox Code Playgroud)

注意:此方法对于C而言是典型的,而不是对于C++.如果你想要更多惯用的C++代码,你可以使用这样的东西(而不是FILE和fopen):

ifstream in;    
in.open(argv[1]); 
if (!in) { /* report an error */ }
string str;
in >> str;
Run Code Online (Sandbox Code Playgroud)