如何在C++中从输入中读取文件路径,以便打开txt文件

How to read a file path from input in C++ so you can open a txt file?

本文关键字:文件 txt 路径 读取 C++ 输入      更新时间:2023-10-16

我在c:\....mydocuments中有一个名为myPoints.txt的文件。它包含一些x,y点的列表(例如,3.4,5.6)。我正在尝试使用ifstream打开它。一旦我进入文件目录,就会出现运行时错误,程序就会关闭。(例如…c:mydocumentsmyPoints.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;(其中namestd::string)这样的代码将只读取到第一个空白字符。您可能需要std::getline(std::cin, name);,因此它将读取整行(即,您键入的所有内容,直到回车为止)。