簡體   English   中英

如何從C ++中的輸入讀取文件路徑,以便可以打開txt文件?

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

我在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;這樣的代碼cin >> name; (其中namestd::string )只會讀取第一個空格字符。 您可能想要std::getline(std::cin, name); 相反,它將讀取整行(即您輸入的所有內容,直到回車)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM