2015-05-28 2 views
1
#include <iostream> 
#include <fstream> 

using namespace std; 


int main() 

{ 
    int a , b , c , d; 
    ifstream myfile; 

    myfile.open ("numbers.txt"); 
    myfile >> a, b, c; 
    d = a + b + c; 

    ofstream myfile; 
    myfile.open ("result.txt"); 
    myfile << d; 
    myfile.close(); 

    return 0 
} 

Файл number.txt содержит 3 числа 10, 8, 9. Я пытаюсь заставить программу читать их и суммировать их в файле результатов .txt.C++ ввода/вывода с файлами

Ошибки я получаю:

conflicting declaration 'std :: ifstream myfile' 
no match for 'operator << in myfile << d' 
'myfile' has a previous declaration as 'std :: ifstream myfile' 
+1

Сообщение об ошибке очевидно. Вы не можете использовать одно и то же имя переменной 'myfile' для обоих потоков файлов. – AccessViolation

+0

Возможно, выберете другое название для вашего' ofstream'? – emlai

+1

Вам нужно прочитать [оператор запятой] (http://stackoverflow.com/questions/54142/how-does-the-comma-operator-work). –

ответ

2

Вы не можете объявить две разные переменные с тем же именем. Сначала вы объявляете myfile типа std::ifstream, а затем вы объявляете myfile от std::ofstream. Назовите переменную выходного потока по-разному.

+0

, который очистил 2 ошибки, спасибо, последняя ошибка: нет соответствия для 'operator << в myfile << d' – ParanoidParrot

+0

Возможно, вы все еще используете входной поток для вывода. Вместо этого используйте выходной поток. –

+0

@ParanoidParrot, потому что вы не записываете во входной поток ... – Qix

3

(Это только адреса одного из двух ошибок в коде.)

myfile >> a, b, c; 

Эта строка не считывает данные для всех трех переменных a, b и c. Он только считывает ввод в a, затем вычисляет b и отбрасывает значение, затем вычисляет c и отбрасывает значение.

Что вы хотите:

myfile >> a >> b >> c; 

Это будет считывать значение для всех трех переменных из myfile.

Смежные вопросы