строка — не может получить файл для чтения данных из файла (c ++)

Данные во входном файле:

Уилсон Джек 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

что я делаю неправильно?

-1

Решение

Попробуй это:

if (!(cin >> value >> value2 >> value3)) {
cout << "input failed" << endl;
return -1;
}

Я думаю, что ваш ввод не удастся. Вы также можете проверить, правильно ли был открыт файл, чего нет в вашем коде.

Кстати: нет необходимости явно закрывать потоки, они закрываются автоматически, когда они выходят из области видимости и вызывается их деструктор.

1

Другие решения

Ваша программа, вероятно, имеет проблемы с чтением входного файла. Зачем? На основании выходных значений:

Фамилия: Имя salry: -9.25596e + 061повышение: -858993460

Это связано с тем, что оба Lastname а также Firstname пусты (т. е. после двоеточия нет ничего), что числа после salry а также increase обычно, когда вы неинициализировали свои переменные, как в своем коде.

Что вы должны сделать, это проверить, если файл открыт:

if (!in.is_open()) {
std::cerr << "Error opening input file!\n";
exit(1);
}
0

По вопросам рекламы [email protected]