簡體   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