c++ - 如何从 C++ 中的输入读取文件路径以便打开 txt 文件?

标签 c++ c++11 file-io iostream istream

我在 c:\\....\mydocuments 中有一个名为 myPoints.txt 的文件。它包含一些 x,y 点的列表(例如 3.4,5.6 )。 我正在尝试使用 ifstream 打开它。 一进入文件目录,我就收到运行时错误并且程序关闭。(例如...c:\mydocuments\myPoints.txt)

  1. 如何输入正确的文件目录?
  2. 有没有一种干净的方法可以将此代码放入以“ifstream ifs”作为参数的函数中??

这是我的文件打开代码:

int main()
{
    cout << "Please enter the file name: ";
    string name;
    cin >> name;
    ifstream ifs(name.c_str());
    if (!ifs) error("can't open input file ", name);

    vector < Point > points;
    Point p;
    while (ifs >> p) points.push_back(p);
    // ....
}

不确定问题是否出在我的 ifstream 函数中,所以我添加它以防万一:

ifstream& operator >>(ifstream& ifs, Point& p)
{
    double x, y;
    char comma;
    ifs >> x >> comma >> y;
    if (!ifs) return ifs;
    if (comma != ',') {
        ifs.clear(ios_base::failbit);
        return ifs;
    }
    p = Point(x, y);
    return ifs;
}

最佳答案

是的,您可以输入文件的完整路径。最主要的是您需要正确输入所有内容(例如,至少在大多数语言环境中,您需要在 My Documents 中留一个空格)。

另请注意,像 cin >> name; 这样的代码(其中 name 是一个 std::string)只会读取到第一个空白字符。您可能需要 std::getline(std::cin, name); 来代替,这样它会读取整行(即,您输入的所有内容,直到回车为止)。

关于c++ - 如何从 C++ 中的输入读取文件路径以便打开 txt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303734/

相关文章:

Java:从 InputStream 读取并不总是读取相同数量的数据

C++:重载下标运算符(不同的返回类型)

c++ - 如何在C++中将整数链接列表递归拆分为奇数和偶数列表?

c++ - 什么导致双向链表代码中的段错误

c - 为什么我无法输入在c 中打开的文件名?

c - C 中的文件 IO 和字符串意外值

c++ - 获取唯一编号并知道它们何时被释放

c++ - vector push_back a moved local var in c++11 测试和混淆

c++ - 是否有可能有一个非递归的 at_c 实现?

c++ - 在 Variadic 模板容器类中是否可以使用无模板 getter ?