Запись в текстовый файл C ++ - PullRequest
0 голосов
/ 29 апреля 2020

Я хотел бы написать слова в файле, пока я не наберу слово «стоп», но в файл будет сохранено только первое слово. В чем проблема?

int main(int i)
    {
        ofstream file;
        string file_name,message;
        cout << "\nFilename: ";
        cin >> file_name;
        cout << "Write 'stop' to end writig to file" << endl;
        for(i=0; message!="stop"; i++)
        {
            cout << "\nYour message: ";
            cin >> message;
            file.open(file_name.c_str());
            file << message.c_str() << "\t" ;
        }
        file.close();
        return 0;
    }

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

В этом случае вам лучше переключиться на некоторое время l oop вида: while (!file.eof()) или while (file.good()).

Кроме того, для l oop необходимо определить переменную, в вашем случае я не определен и должен содержать диапазон переменной, а не определение другой переменной (условие в сообщении не должно быть внутри Это должно быть условие if внутри для l oop).

   ...
   char word[20]; // creates the buffer in which cin writes
   while (file.good() ) {
        cin >> word;
        if (word == "stop") {
           break;
        ...
        }
   } 
   ...

На самом деле, я не совсем уверен, как оно компилируется вообще в вашем случае :) Для дальнейшего использования: для l oop должно выглядеть так: for (int i = 0; i<100; i++) {};

Надеюсь, это понятно!

1 голос
/ 29 апреля 2020

Должно быть,

int main()
    {
        int i;
        ofstream file;
        string file_name,message;
        cout << "\nFilename: ";
        cin >> file_name;
        cout << "Write 'stop' to end writig to file" << endl;
        file.open(file_name.c_str());
        for(i=0; message!="stop"; i++)
        {
            cout << "\nYour message: ";
            cin >> message;
            if(message == "stop"){ //If you dont want word stop
               break;
            }
            file << message.c_str() << "\t" ;
        }
        file.close();
        return 0;
    }

Было бы лучше, если бы вы сделали что-то вроде

do{
   //do stuff
   if (message == "stop")
       break;
   }while(message != "stop");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...