我找到了一个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*?
函数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)