繁体   English   中英

C ++:为什么getline()不打印输入字符串的最后一个单词?

[英]C++: Why won't getline() print the last word of the input string?

我试图让我的程序读取一个字符串,然后在单独的一行上输出每个单词。 当我调用此函数时,它不会打印句子的最后一个单词。 我无法找到此问题的答案。

例如:

输入:

你好,我的朋友

输出:

你好

那里

我的

这是我的代码:

istream& operator >> (istream& in, FlexString& input) {
    std::string content;
    while (std::getline (in,content,' ')) {
        cout << content << endl;
    }

    return in;
}

我是C ++的新手,所以这可能很愚蠢,但是我尝试在while循环之后添加另一个cout调用以在下一行上打印内容 ,但是由于某种原因它不会打印它。

getline没有跳过最后一个单词。 它仍在等待您完成它。 您选择了空格字符( ' ' )作为分隔符,因此getline将读取直到找到空格(不是制表符或换行符),或者直到输入流结束为止。 您的循环也不会在行尾停止,就像您期望的那样。 它会一直读取直到流结束。

如果要读取一行,然后逐行分隔行,则只需使用\\n分隔符(这是默认值)调用一次getline 然后使用istringstream分隔所得字符串。

std::string line;
std::getline(in, line);
std::istringstreaam iss(line);
std::string content;
while (iss >> content)
    std::cout << content << std::endl;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM