繁体   English   中英

如何从 c++ 中的文件读入 [暂停]

[英]How do I read in from a file in c++ [on hold]

我无法从文件中读取字符。 当此代码运行时,它说它无法从文件中读取。 该文本文件与 main.cpp 位于同一文件夹中(不确定这是否有问题)。

char read_from_file;

std::cout << "You picked a pre-written file to play against" << std::endl;
std::cout << "A pre determined choice has been picked, what do you choose?" << std::endl;

std::ifstream inFile;
inFile.open("rps.txt");
inFile >> read_from_file;

if (inFile.is_open())
{
   std::cout << "Successful" << std::endl;
}
else
{
   std::cout << "Unable to open file" << std::endl;
}
inFile.close();

尝试“rps.txt”的完整路径。 它应该工作。

听起来您已经有了这个,但为了完整起见,您要读取的文件应该与可执行文件位于同一目录中。

dir
  |- main.cpp
  |- rps.txt
  |- a.out*

* or whatever the name of your program is

我只是在我的 rps.txt 文件中放了一个“R”。 你的代码大多是好的。 有一个关键区别,那就是您需要在尝试打开文件后立即检查您是否打开了该文件。 在尝试读取之前,您需要知道它是否已打开。

#include <iostream>
#include <fstream>

int main()
{
    char read_from_file;

    std::cout << "You picked a pre-written file to play against" << std::endl;
    std::cout << "A pre determined choice has been picked, what do you choose?" << std::endl;

    std::ifstream inFile;
    inFile.open("rps.txt");
    if (!inFile.is_open())  // You would probably flesh this out with an error
        return 1;           // message or something

    inFile >> read_from_file;

    if (inFile.is_open())
        std::cout << "Successful" << std::endl;
    else
        std::cout << "Unable to open file" << std::endl;
    inFile.close();
}

这对我来说很好。 您没有具体说明您的错误消息是什么。 您是从代码中收到“无法打开文件”,还是收到系统消息? 该解决方案很可能确保文件可以被读取,也可以被执行。 为了安全起见,您可以从终端运行chmod 777 rps.txt * 以授予对文件的完全权限。

我还要评论说,因为我所有的ifelse语句都只是单个语句,所以我可以安全地省略{ } 如果您需要一个块来做不止一件事,请带回花括号,如果较大块的一个分支需要花括号,那么所有分支都应该获取它们以保持一致性/可读性。

* Linux 和 macOS。 您可以右键单击 Windows 中的文件并在那里设置权限。 也可能是 PowerShell,但我没有关于 go 的最模糊的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM