段落を取り、すべての文の後に新しい行を開始するコードがあります。C++で1行に新しい行を出力する方法
ターミナルの出力を新しい行でバッファしたいが、 "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;
}
[cinを使用して入力を読み取る前に[coutのフラッシング]の可能な複製はなぜですか?](http://stackoverflow.com/questions/2704752/flushing-of-cout-prior-to-reading-input-using- cin-why) – Barmar
私は、新しい行のそれぞれの新しいプッシュの前に型で "cout"をフラッシュしようとしましたが、新しい行が最初に作成されるようには見えません。 – Vyff
@コーディングピッグはほぼ正しいです。入力の前に余分な行が必要な場合は、コメントアウトされた行を1つのブレースに移動するだけです。 – user4581301