owe*_*eet 3 c++ getline visual-c++
我知道我知道。 这个问题以前曾被问过,但我查看了所有答案,似乎没有一个能解决我的问题。当我使用 getline 函数获取文件中某一行的内容时,它不起作用。
getline(file, line);
Run Code Online (Sandbox Code Playgroud)
“文件”在这里声明:
ifstream File;
File.open("fruit.txt");
Run Code Online (Sandbox Code Playgroud)
并且“line”在这里声明:
int line = 0;
Run Code Online (Sandbox Code Playgroud)
Getline 带有红色下划线并显示以下消息:
getline
no instance of overloaded function "getline" matches the argument list
argument types are :(std::ifstream, int)
Run Code Online (Sandbox Code Playgroud)
这意味着 getline 的实例没有文件流的参数列表和整数。
这是没有意义的,因为关于此事的所有其他问题都明确指出,参数是文件流和整数。
我究竟做错了什么?
编辑:
这是完整的代码:
ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
int C_FRUIT = getline(fruitFile, line);
fruitFile.close();
Run Code Online (Sandbox Code Playgroud)
第一行应该是一个数字,我需要它。
getline()将读取一行文本。它不能直接读取 int。这就是您收到错误消息的原因。
你必须知道有两个getline()。有一个是istream::getline()和 std::getline()。两者都有不同的签名。第一个是流的成员函数,在流头中定义;后者在<string>标头中定义。
但要注意: 的返回值std::getline()不是 an int!这是一个流参考。这就是您收到第二个编译器错误的原因。
最后,如果你想读取整数 x,使用提取器会更容易:
int value;
fruitFile >> value;
fruitFile.ignore(SIZE_MAX, '\n'); // in case you'd need to go to next line
Run Code Online (Sandbox Code Playgroud)
或者,如果您确实想读取整行的 int:
string line;
getline(fruitFile, line);
stringstream sst(line); // creates a string stream: a stream that takes line as input
sst >> value;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42400 次 |
| 最近记录: |