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

时间:2013-11-30 18:04:04

标签: 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”作为参数的函数?
  3. 这是我的文件打开代码:

    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;
    }
    

1 个答案:

答案 0 :(得分:0)

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

另请注意,cin >> name;(其中namestd::string)等代码只能读取第一个空格字符。你可能想要std::getline(std::cin, name);,所以它会读取整行(即你输入的所有内容,直到回车)。