Данные во входном файле:
Уилсон Джек 87236.45 11
Мой код:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
ofstream out;
ifstream in;
string Lastname, Firstname;
double salary;
int increase;
in.open("Lab5_Ex_3_Input.txt");
out.open("Lab5_Ex_3_Output.txt");in >> Lastname >> Firstname >> salary >> increase;
out << "Lastname: "<< Lastname << "Firstname " << Firstname << "salry :" << salary <<"increase: "<< increase <<endl;in.close();
out.close();
return 0;
}
Итак, когда я проверяю выходной файл, я получаю:
Фамилия: Имя salry: -9.25596e + 061повышение: -858993460
что я делаю неправильно?
Попробуй это:
if (!(cin >> value >> value2 >> value3)) {
cout << "input failed" << endl;
return -1;
}
Я думаю, что ваш ввод не удастся. Вы также можете проверить, правильно ли был открыт файл, чего нет в вашем коде.
Кстати: нет необходимости явно закрывать потоки, они закрываются автоматически, когда они выходят из области видимости и вызывается их деструктор.
Ваша программа, вероятно, имеет проблемы с чтением входного файла. Зачем? На основании выходных значений:
Фамилия: Имя salry: -9.25596e + 061повышение: -858993460
Это связано с тем, что оба Lastname
а также Firstname
пусты (т. е. после двоеточия нет ничего), что числа после salry
а также increase
обычно, когда вы неинициализировали свои переменные, как в своем коде.
Что вы должны сделать, это проверить, если файл открыт:
if (!in.is_open()) {
std::cerr << "Error opening input file!\n";
exit(1);
}