[英]C++ Getline issues (No instance of overloaded function "getline"
我知道我知道。 以前有人問過這個問題,但我查看了所有答案,似乎沒有一個能解決我的問題。 當我使用 getline 函數獲取文件中一行的內容時,它不起作用。
getline(file, line);
'文件'在這里聲明:
ifstream File;
File.open("fruit.txt");
並且在這里聲明了“行”:
int line = 0;
Getline 以紅色下划線顯示此消息:
getline
no instance of overloaded function "getline" matches the argument list
argument types are :(std::ifstream, int)
這意味着 getline 的任何實例都沒有文件流的參數列表和一個整數。
這是沒有意義的,因為關於這個問題的所有其他問題都明確指出,參數是文件流和整數。
我究竟做錯了什么?
編輯:
這是完整的代碼:
ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
int C_FRUIT = getline(fruitFile, line);
fruitFile.close();
第一行應該是一個數字,我需要它。
getline()
將讀取一行文本。 它不能直接讀取 int。 這就是您收到錯誤消息的原因。
您必須知道有兩個getline()
。 有一個是istream::getline()
和std::getline()
。 兩者都有不同的簽名。 第一個是流的成員函數,定義在流頭中; 后者在<string>
標頭中定義。
但請注意: std::getline()
的返回值不是int
! 這是一個流引用。 這就是為什么您會收到第二個編譯器錯誤。
最后,如果您想讀取整數 x,使用提取器會更容易:
int value;
fruitFile >> value;
fruitFile.ignore(SIZE_MAX, '\n'); // in case you'd need to go to next line
或者,如果您真的想在整行中讀取 int:
string line;
getline(fruitFile, line);
stringstream sst(line); // creates a string stream: a stream that takes line as input
sst >> value;
getline 的第二個參數需要是一個字符串: http ://www.cplusplus.com/reference/string/string/getline/
我認為你試圖實現的是:
ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
fruitFile >> line
fruitFile.close();
我遇到了同樣的錯誤。 將此添加到您的代碼中以解決問題
string
庫include <string>
string_variable
應為string
類型。std::getline(cin, sting_variable)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.