【问题标题】:Problems reading in a file in C++在 C++ 中读取文件的问题
【发布时间】:2021-03-01 03:52:44
【问题描述】:

我在读取 C++ 文件时遇到问题。将包括相关代码和我的文件示例。提前谢谢你。

string fileName;
cout << "Enter file name: ";
cin >> fileName;


ifstream inputFile(fileName);
if (inputFile.is_open()) {
    getline(inputFile, line);
    pNum = stoi(line);
    int i = 0;
    
    while (getline(inputFile, line)) {
        double x = stod(line.substr(0, line.find(" ")));
        double y = stod(line.substr(line.find(" ")));
        Point pTemp;
        pTemp.x = x;
        pTemp.y = y;
        p.push_back(pTemp);
        i++;
        cout << "File is open" << endl;
    }
    inputFile.close();
}
else {
    cout << "Problem reading input file" << endl;
}

文本文件 (file7.txt)
5.63585 0.0125126
8.08741 1.93304
4.79873 5.85009
8.95962 3.50291
7.46605 8.2284
8.58943 1.74108
5.13535 7.10501

【问题讨论】:

  • 这段代码有什么问题?它会产生某种错误吗?
  • @SilvioMayolo,即使我输入名称“file7.txt”,它也会跳到“读取输入文件时出现问题”。我一步一步走了,我不确定它有什么问题。
  • 我的猜测是,当前工作目录不是你想的那样,文件file7.txt不在里面。
  • 我对@IgorTandetnik 感到很困惑,我对我一直在使用的 IDE 不熟悉

标签: c++ algorithm data-structures


【解决方案1】:

我从未见过您使用的语法,所以不妨试试这个。将ifstream inputFile(fileName); 替换为ifstream inputFile;,然后是inputFile.open(fileName);

【讨论】:

  • ifstream inputFile(fileName); 是正确的,你的例子也是如此。 OP 调用了ifstream 的构造函数并将文件名传递给它。
【解决方案2】:

有效!我对我一直在使用的 IDE 完全陌生,@Igor 是正确的。我的当前工作目录设置错误。谢谢大家的帮助!

【讨论】:

  • 您的if 中不应有else。它应该只是 if (!inputFile.is_open()) { /* handle error */ exit (EXIT_FAILURE); } 如果打开失败则退出,您可以在源文件的其余部分中保存整个缩进级别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 2012-09-28
  • 2017-07-21
相关资源
最近更新 更多