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

标签 c++ file char

我找到了一个从命令行参数 (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/

相关文章:

c++ - 检测执行流程分歧

windows - 奇怪的标准输出重定向行为

c++ - 复制数组然后删除原来的

java - 如何从 Java 中的给定 URL 下载 PDF?

java - java写入txt文件

c - 删除字符串时出现段错误

string - 方案:如何将字符转换为数字/字符串

将 C 中的声明转换为 Delphi

c++ - 哪个Qt小部件(不是webkit)可以显示html图像链接(如项目列表)

返回对整数的引用时的 C++ 代码