我找到了一个从命令行参数 (argv[1]) 计算表达式的 C++ 源文件,但我现在想将其更改为读取文件。
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;
}
但是,Utvardering 函数需要一个 char* 参数。如何将从文件 fopen 读取的数据转换为 char*?
最佳答案
函数 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);
注意:此方法是 C 的典型方法,而不是 C++。如果你想要更多地道的 C++ 代码,你可以使用这样的东西(而不是 FILE 和 fopen):
ifstream in;
in.open(argv[1]);
if (!in) { /* report an error */ }
string str;
in >> str;
关于C++ - 将 FILE* 转换为 CHAR*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/983728/