2015-08-23 5 views
1

Я пытаюсь создать простую программу, которая принимает вход пользователя и записывает его в текстовый файл.Запись файлов с помощью fstream

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

int main(){ 
    string name; int score; fstream scoreSheet; 
    scoreSheet.open("score_sheet.txt"); 
    string stayOpen = "y"; 
    while(stayOpen == "y"){ 
     scoreSheet >> name >> score; 
     cout << "Do you want to add another entry? (y/n) "; 
     cin >> stayOpen;} 
    scoreSheet.close(); 
    return 0;} 

Когда это выполняется, в каталоге не создается файл, за исключением gmon.out. Почему не создается файл и как я могу писать пользовательский ввод в файл?

ответ

0

Вам необходимо сделать >> с cin или некоторым файлом, который существует. Оператор >> при использовании с scoreSheet должен быть <<, так как вы пытаетесь написать в поток, не читающий его. Также вы должны подумать об изменении в ofstream, так как вы хотите написать файл

+0

Спасибо! Это сработало. – dantastic

0

Файлы создаются, когда вы открываете их как выходные данные, а не как входные данные.

Когда вы собираетесь считывать данные из файла в свои переменные, файл уже должен быть там (в противном случае, откуда должны поступать данные?). С другой стороны, если вы хотите записать данные в свой файл и, следовательно, открыть его в режиме записи, тогда файл будет создан, если он еще не существует.

0

Вы должны использовать поток, если хотите, чтобы поток файлов был записан. Также, как прокомментировали другие, для записи в файл вам нужно получить контент из другого места, например, из ввода консоли или другого файла для ввода. В качестве руководства попробуйте использовать следующий код. Кроме того, вы посмотрите на fstream или любую приличную книгу по этой теме (например, C++ Primer Глава 8)

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

int main(){ 
    string name; int score; 
    fstream scoreSheet("score_sheet.txt", fstream::out); 
    // Only proceed if file opened successfully 
    if (scoreSheet) { 
     string stayOpen = "y"; 
     while(stayOpen == "y"){ 
      cin >> name >> score; 
      fstream << name << score << "\n"; 
      cout << "Do you want to add another entry? (y/n) "; 
      cin >> stayOpen; 
     } 
     scoreSheet.close(); 
    } 
    return 0; 
} 
1
  • Для создания файла и записи в этот файл, вы должны в режим указать в открытой функции.
  • А также вы должны сканировать данные каждый раз, когда вы даете Да для записи данных в файл.
  • Ниже приведен обновленный код. Надеемся, что это решит вашу проблему.

    #include <iostream> 
    #include <string> 
    #include <fstream> 
    
    using namespace std; 
    
    int main() 
    { 
    string name ; int score; fstream scoreSheet; 
    scoreSheet.open("path to ur file", fstream::out | fstream::app); 
    string stayOpen = "y"; 
    
        while(stayOpen == "y") 
        { 
        cout<<"Enter new entry for name and score"<<endl; 
        cin >> name >> score; 
        scoreSheet << name << score; 
        cout << "Do you want to add another entry? (y/n) "; 
        cin >> stayOpen;} 
        scoreSheet.close(); 
    
        return 0; 
        }