Создание текстового файла, ввод строки за строкой - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу сделать текстовый файл, заполняя его строка за строкой, до пустой строки.Но каким-то образом у меня есть бесконечный ввод, какое условие мне нужно сделать, чтобы избежать бесконечного цикла?

Вот мой код:

  fstream f;
f.open("text1.txt", ios::out);
bool flag = false;
while (!flag) {
    char buf[50];
    cin >> buf;
    if (strlen(buf)!=0 )
        f<<buf<<endl;
    else {
        f.close();
        flag = true;
    }
}

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

С cin >> buf вы читаете по одному слову за раз.Проще использовать std::getline вместо:

fstream f;
f.open("text1.txt", ios::out);
bool flag = false;
while (!flag) {
    string str;
    getline(cin, str);
    if (cin && !str.empty())
        f<<str<<endl;
    else {
        f.close();
        flag = true;
    }
}

Если вы вынуждены использовать фиксированный буфер, вам нужно искать вхождение \n\n в данных.\n - это символ новой строки в C ++.

0 голосов
/ 12 апреля 2019

Вам нужно перебрать цикл , пока , до конца файла.

fstream f;
f.open("text1.txt", ios::out);
char buf[50];

while (cin >> buf)    // it becomes false when end of file reach. You can test it from keyboard by Ctrl+Z and then Enter
{
    f<<buf<<endl;
}
f.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...