Как сохранить данные, указанные пользователем - PullRequest
1 голос
/ 14 апреля 2020

это программа, которая должна сохранять выходные данные в указанный пользователем файл данных, однако, похоже, что она не сохраняется, и я не уверен, почему, я относительно новичок в C ++, поэтому любая помощь приветствуется

cout << "Press 's' then 'Enter' to save the file or any other key then 'Enter' to display";
cin >> save;

if (save != 's')
{
    cout << "Ix = " << Ix << "A\n";
    cout << "Iy = " << Iy << "A\n";
    cout << "Vz = " << Vz << "V\n";
}
else
{
    cout << "Please enter a name for your file: \n";
    cin >> filename;

    cout << " Please enter a directory to save your file in: \n";
    cin >> filepath;

    ofstream file((filepath + "/" + filename).c_str());

//input is being writen to the file
    file << "Ix = " << Ix << "A\n";
    file << "Iy = " << Iy << "A\n";
    file << "Vz = " << Vz << "V\n";

    file << flush;
    file.close();
}

}

1 Ответ

2 голосов
/ 14 апреля 2020

добро пожаловать в SO.

При открытии потока файлов сначала необходимо проверить, какая операция открытия прошла успешно.
Вы можете сделать это следующим образом:

if(!file) { /* file isn't "good", open seems to have failed */}
/* or */
if(!file.good()) { /* file isn't good */ }

Я думаю, потому что ничего не пишется к файлу (ни к созданию файла?) каталог, вероятно, не существует.
Класс std::ofstream не будет автоматически создавать необходимые каталоги.
Как вы могли бы создать необходимые каталоги, хорошо объяснено здесь: https://en.cppreference.com/w/cpp/filesystem/create_directory

...