簡體   English   中英

C++ Getline 問題(沒有重載函數“getline”的實例

[英]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();

我遇到了同樣的錯誤。 將此添加到您的代碼中以解決問題

  1. 添加string
include <string>
  1. 添加以下函數調用,其中string_variable應為string類型。
std::getline(cin, sting_variable)

暫無
暫無

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

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