Почему этот фрагмент моего кода не записывается в файл

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

else if (x == 2)
{
    cout << "You have selected option number 2. Deposit.\n";
    cout << "Please enter you account ID: ";
    cin >> ID;
    file.open("C:\\Users\\Raggulddon\\Desktop\\C++ supplement\\Cust_" + ID + ".dat", ios:: in | ios::out | ios::binary);

    if (!file)
    {
        cout << "Sorry the requested account could not be located.\n";
    }
    else
    {
        file >> firstname >> lastname;
        cout << endl << firstname << " " << lastname << endl;
        cout << "-----------------------------------\n";
        string line;
        while (getline(file, line))
        {

            // stringstream the getline for line string in file
            istringstream iss(line);

            if (iss >> date >> amount)
            {
                cout << date << "\t\t$" << showpoint << fixed << setprecision(2) << amount << endl;
                famount += amount;
            }

        }
        cout << "Your balance is $" << famount << endl;
        cout << "How much would you like to deposit today: $";
        cin >> amountinput;

        float newbal = 0;
        newbal = (famount += amountinput);


        cout << "\nYour new balance is: $" << newbal << ".\n";
        file << date << "\t\t" << newbal; //***This should be writing to file
        but it doesn 't.

file.close();

Текстовый файл выглядит так:

Тони Гаддис

24.05.12 100

30.05.12 300

01.07.12 -300

// Консольный вывод выглядит так

Тони Гаддис

24.05.12 100

30.05.12 300

01.07.12 -300

Ваш баланс: #1

Сколько вы хотели бы внести: #2

Ваш новый баланс: #1 + #2

записать в файл

закрыть файл.

// выходит из основного цикла::::

Как я могу сделать это записать в файл и сохранить его, и почему это происходит.

Я пытался сделать это с ostringstream а также учитывая, как я использовал istringstream для ввода. Но это тоже не сработало:

float newbal=0;
newbal = (famount += amountinput);

ostringstream oss(newbal);
oss << date << "\t\t" << newbal;

Я пытаюсь самостоятельно учить C++, поэтому любая полезная информация будет любезно оценена.

1 ответ

Если вы хотите написать текстовый файл, вы не должны использовать "ios::binary" при открытии файла.

Другие вопросы по тегам