2017-01-19 76 views
0

我有一些代碼需要在段落中並在每個句子之後開始一個新行。如何在C++中用新行輸出一個緩衝區

我想用新行緩衝終端中的輸出,但添加「std :: cout < < endl;」循環之外似乎沒有工作。如果將輸入鍵入輸入端,則可以幫助將輸入與輸出分離。

我已經註釋掉了我希望工作的代碼,但是沒有。

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 

    // std::cout << std::endl; 

    for (;;) { 
    string line; 
    getline(std::cin, line); 
    if (!cin) { 
     break; 
    } 
    for (unsigned int i = 0; i < line.length(); ++i) { 
     const string text = line.substr(i, 1); 
     if (text == "." || text == "?" || text == "!") { 
      std::cout << text; 
      std::cout << std::endl; 
     }else{ 
      std::cout << text; 
     } 
    } 
    } 

    // std::cout << std::endl; 

    return 0; 
} 
+0

[刷新cout之前讀取輸入使用cin ..爲什麼?]可能的重複(http://stackoverflow.com/questions/2704752/flushing-of-cout-prior-to-reading-input-using- cin-why) – Barmar

+0

在每次新建一行新行之前,我都嘗試使用類型刷新「cout」,但似乎並未允許首先創建新行。 – Vyff

+0

@CodingPig幾乎是正確的。如果你在輸入之前需要額外的一行,我認爲你所需要做的就是將註釋掉的一行移動一個大括號。 – user4581301

回答

-1

註釋行永遠不會工作,因爲它永遠不會被調用。在它之前,你有一個無限循環for(;;)

+0

循環內有一個「break」。 –

+0

一旦沒有更多的閱讀或需要EOF退出並執行程序的其他部分,cin是不會退出的? – Vyff

+0

休息將永遠不會發生 - cin總是堅實的。 –