如何在stdin中使用getline?

时间:2018-09-08 02:32:04

标签: c++

std::stringstream line;
getline(stdin, line);

有人可以向我解释为什么在尝试编译时为什么出现“没有匹配的函数调用getline”错误?

1 个答案:

答案 0 :(得分:2)

C ++没有getline带有FILE*stdin)和iostreamline)作为参数。

相反,您应该

std::string line; 
if (std::getline(std::cin, line)) // ensure read succeeded
{
    std::stringstream linestream(line);
    // opperate on linestream    
}

其中std::cin是与stdin关联的C ++ IO流。

如果您绝对必须在原始文件中使用stdin,则在POSIX兼容系统上,您可以

char * line; 
size_t len; 
if (getline(&line, &len, stdin) != -1) // ensure read succeeded
{
    std::stringstream linestream(line);
    free(line); // release the buffer allocated by getline
                // must free(line). Do not delete line;
    // opperate on linestream    
}

您已将此标签标记为C ++,所以我建议使用前者。

Documentation for C++ std::getline

Documentation for POSIX getline