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

dm7nw8vv  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(191)

我在c:\\....\mydocuments中有一个名为myPoints.txt的文件。它包含一些x,y点的列表(例如,3.4,5.6)。我尝试使用ifstream打开它。当我进入文件目录时,我得到一个运行时错误,程序关闭。(例如... c:\mydocuments\myPoints.txt
1.如何输入正确的文件目录?
1.有没有一种干净的方法可以将这些代码放入一个以“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;
}
l7wslrjt

l7wslrjt1#

是的,你可以输入文件的完整路径。主要的是你需要正确地输入所有的路径(例如,至少在大多数语言环境中,你需要在My Documents中输入一个空格)。
还要注意,像cin >> name;namestd::string)这样的代码只读取到第一个空格字符,而你可能需要std::getline(std::cin, name);,所以它会读取整行(即,你输入的所有内容,直到回车)。

相关问题