2016-02-06 5 views
-1

данных во входном файле:Не удается получить выходной_файл считывать данные из INFILE (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 + 061increase: -858993460

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

+0

@EdHeal: ТАК опубликовал содержимое входного файла. – user3813674

+1

Это работает для меня. Как вы скомпилировали это? – user3813674

+1

Пять баксов говорят, что программа не запускается из того же каталога, что и входной файл. Иногда IDE играют такие глупые трюки. – user4581301

ответ

0

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

Фамилия: Имя salry: -9.25596e + 061increase: -858993460

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

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

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

@ jdr1 привет спасибо за ответ, к сожалению, я не могу использовать инструкции if, потому что если утверждения не включены в главу, и я буду отмечен, чтобы не использовать правильный метод :( – Ninjaboi

1

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

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

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

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

+0

вы правы, я получаю " Вход не удался ", когда я подключаю его, так что я должен делать? – Ninjaboi

+0

Вы прислушались к предложению« проверить, был ли файл открыт »? Заметьте, что я считаю, что вы достаточно зрелы, чтобы узнать, как именно, дайте какие-либо подробности, как это сделать. –