Форум программистов, компьютерный форум CyberForum.ru

Файловый ввод-вывод - C++

Восстановить пароль Регистрация
 
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 16:13     Файловый ввод-вывод #1
Прохожу тему файлового ввода-вывода, написал такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
 ifstream infile("in_file");
 ofstream outfile("out_file");
 if ( ! infile ) {
 cerr << "ГЋГёГЁГЎГЄГ* îòêðûòèÿ âõîäГ*îãî ГґГ*éëГ*.\n"
 return -1;
}
 if ( ! outfile ) {
 cerr << "ГЋГёГЁГЎГЄГ* îòêðûòèÿ âûõîäГ*îãî ГґГ*éëГ*.\n"
 return -2;
}
 
 string word;
 while ( infile >> word )
 outfile << word << ' ';
 system ("pause");
 return 0;
}
Выбивает ошибку:

C++
1
2
3
4
 D:\DEV\Г—ГЁГІГ*ГҐГІ ГЁГ§ ГґГ*éëГ* ГЁ ââîäèò Гў ГґГ*éë\main.cpp In function `int main()': 
14 D:\DEV\Г—ГЁГІГ*ГҐГІ ГЁГ§ ГґГ*éëГ* ГЁ ââîäèò Гў ГґГ*éë\main.cpp expected `;' before "return" 
18 D:\DEV\Г—ГЁГІГ*ГҐГІ ГЁГ§ ГґГ*éëГ* ГЁ ââîäèò Гў ГґГ*éë\main.cpp expected `;' before "return" 
 D:\DEV\Г—ГЁГІГ*ГҐГІ ГЁГ§ ГґГ*éëГ* ГЁ ââîäèò Гў ГґГ*éë\Makefile.win [Build Error]  [main.o] Error 1
Как я понял компилятор не хочет воспринимать return -1, return -2? Или как?
P.S. Фалы in_file, out_file я не создавал, думаю что они сами создадутся, или это не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 16:13     Файловый ввод-вывод
Посмотрите здесь:

Файловый ввод/вывод в С++ C++
Файловый ввод/вывод C++
C++ Файловый ввод/вывод
Файловый ввод\вывод C++
Файловый ввод-вывод C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
16.07.2013, 16:15     Файловый ввод-вывод #2
C++
1
cerr << "Ошибка открытия входного файла.\n"
Где точка с запятой?
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 16:34  [ТС]     Файловый ввод-вывод #3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
cerr << "Ошибка открытия входного файла.\n"
Где точка с запятой?
Точно, я как-то не заметил Спасибо!

Добавлено через 18 минут
Появился ещё один вопрос
Допустим, я захочу создать игру.Мне нужно чтоб человек ввёл свой логин (очки и т.д. это уже потом сам разберусь), и его логин записался в файл.И чтоб при следующем входе в игру человек мог ввести свой логин снова, и продолжить игру там, где закончил) Если короче - человек вводит логин - логин записывается в файл - при следующем входе человек вводит тот же логин и продолжает свои действия с того же момента
Можете подсказать как такое сделать?
Я уже сделал примерный набросок, но не уверен...)Просто ошибки есть при компиляции
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() {
cout << "Enter you login: " << endl;
char login[50];
cin >> login;
{
 ifstream infile("in_file.txt");
 ofstream outfile("out_file.txt");
 if ( ! infile ) {
 cerr << "Error opening the input file" << endl;
 return -1;
}
 if ( ! outfile ) {
 cerr << "Error opening output file" << endl;
 return -2;
}
}
 while ( infile.txt >> login )
 outfile.txt << login << ' ';
 cout << "Enter a file is successful!" << endl;
 system ("pause");
 return 0;
}
Вот ошибки:

C++
1
2
3
4
24 D:\DEV\Г’ГҐГ±ГІ ГІГЁГЇГ* ГЁГЈГ°Г* ГЄГ*ðî÷\main.cpp `infile' undeclared (first use this function) 
  (Each undeclared identifier is reported only once for each function it appears in.) 
25 D:\DEV\Г’ГҐГ±ГІ ГІГЁГЇГ* ГЁГЈГ°Г* ГЄГ*ðî÷\main.cpp `outfile' undeclared (first use this function) 
 D:\DEV\Г’ГҐГ±ГІ ГІГЁГЇГ* ГЁГЈГ°Г* ГЄГ*ðî÷\Makefile.win [Build Error]  [main.o] Error 1
Пробовал убирать в
C++
1
2
 while ( infile.txt >> login )
 outfile.txt << login << ' ';
названии файлов .txt но то же самое выходит)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 16:58     Файловый ввод-вывод #4
C++
1
2
while ( infile >> login )
 outfile<< login << ' ';
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 17:16  [ТС]     Файловый ввод-вывод #5
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
while ( infile >> login )
 outfile<< login << ' ';
Не работает, та же ошибка)

Добавлено через 5 минут
А если упростить программу до такого:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() {
char login[50];
 cout << "Enter you login: " << endl;
 cin >> login;
 ifstream infile("login.txt");
 ofstream outfile("save.txt");
 while ( login >> login )
 save << login << ' ';
 system ("pause");
 return 0;
}
?

Можете сказать что тут не так? А то никак не могу понять в чём ошибка
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 17:17     Файловый ввод-вывод #6
12, 18 строчки(3 пост), что за скобки?
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 17:20  [ТС]     Файловый ввод-вывод #7
Цитата Сообщение от alsav22 Посмотреть сообщение
12, 18 строчки(3 пост), что за скобки?
Ну я их уже убрал, давайте так, вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() {
 string login;
 cout << "Enter you login: " << endl;
 cin >> login;
 ifstream infile("login.txt");
 ofstream outfile("save.txt");
 while ( login >> login )
 save << login << ' ';
 system ("pause");
 return 0;
}
Тут нет ничего лишнего Поможете исправить?

Ошибки:
C++
1
2
14 D:\DEV\Г’ГҐГ±ГІ ГІГЁГЇГ* ГЁГЈГ°Г* ГЄГ*ðî÷\main.cpp no match for 'operator>>' in 'login >> login' 
15 D:\DEV\Г’ГҐГ±ГІ ГІГЁГЇГ* ГЁГЈГ°Г* ГЄГ*ðî÷\main.cpp `save' undeclared (first use this function)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 17:20     Файловый ввод-вывод #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() 
{
    cout << "Enter you login: " << endl;
    char login[50];
    cin >> login;
 
    ifstream infile("in_file.txt");
    ofstream outfile("out_file.txt");
    if ( ! infile ) 
    {
        cerr << "Error opening the input file" << endl;
        return -1;
    }
 
    if ( ! outfile ) 
    {
        cerr << "Error opening output file" << endl;
        return -2;
    }
    
    while ( infile >> login )
        outfile << login << ' ';
    
    cout << "Enter a file is successful!" << endl;
     
    system ("pause");
    return 0;
}
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 17:24  [ТС]     Файловый ввод-вывод #9
Хмм...Я пробовал такой же код, не сработало...Возможно я что-то не усмотрел)Ну это работает, спасибо огромное!

Добавлено через 1 минуту
Не понимаю, так то всё вроде бы работает, но в файлы ничего не записывается)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 17:26     Файловый ввод-вывод #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() 
{
    char login[50];
    cout << "Enter you login: " << endl;
    cin >> login;
    
    ifstream infile("login.txt");
    ofstream outfile("save.txt");
    
    while ( infile >> login )
        outfile << login << ' ';
    
    system ("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Не понимаю, так то всё вроде бы работает, но в файлы ничего не записывается)
Файл, с которого читаете существует? Что хотите сделать? Что должно записаться?
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 17:28  [ТС]     Файловый ввод-вывод #11
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() 
{
    char login[50];
    cout << "Enter you login: " << endl;
    cin >> login;
    
    ifstream infile("login.txt");
    ofstream outfile("save.txt");
    
    while ( infile >> login )
        outfile << login << ' ';
    
    system ("pause");
    return 0;
}
Добавлено через 1 минуту

Файл, с которого читаете существует? Что хотите сделать?
Смотрите.Я только что скомпилировал ваш код (10 пост), но результат тот же.
Я создал в папке файл login.txt сам, но когда я в программе ввёл логин то ничего не произошло, просто создался файл save.При этом в файле логин тоже ничего не поменялось
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 17:33     Файловый ввод-вывод #12
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Я создал в папке файл login.txt сам,
В нём что?

Добавлено через 27 секунд
Цитата Сообщение от Даниил1991 Посмотреть сообщение
но когда я в программе ввёл логин то ничего не произошло
А что должно произойти? Повторяю вопрос: что хотите сделать?
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 17:34  [ТС]     Файловый ввод-вывод #13
Ну вообще запланировано так:
Человек вводит логин (в игре допустим это пригодится)
Его логин записывается в файл save
И в следующий раз когда он зайдёт в игру и авторизируется со своим логином то игра продолжится с тем же счётом и т.д.
P.S. В файле login пусто, я ничего не добавлял
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 17:37     Файловый ввод-вывод #14
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Человек вводит логин (в игре допустим это пригодится)
Его логин записывается в файл save
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() 
{
    char login[50];
    cout << "Enter you login: " << endl;
    cin >> login;
    
    //ifstream infile("login.txt");
    ofstream outfile("save.txt");
    
    //while ( infile >> login )
        outfile << login << ' ';
    
    system ("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 17:40     Файловый ввод-вывод
Еще ссылки по теме:

C++ Файловый ввод/вывод
C++ Файловый ввод/вывод
C++ Файловый ввод/вывод

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
16.07.2013, 17:40  [ТС]     Файловый ввод-вывод #15
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdlib>
#include <fstream>
#include <string>
 
using namespace std;
 
int main() 
{
    char login[50];
    cout << "Enter you login: " << endl;
    cin >> login;
    
    //ifstream infile("login.txt");
    ofstream outfile("save.txt");
    
    //while ( infile >> login )
        outfile << login << ' ';
    
    system ("pause");
    return 0;
}
Вот это правильно, так как я и хотел)
Почему это я захотел усложнить всё, ведь действительно, можно было не записывать из файла в файл Спасибо!
Yandex
Объявления
16.07.2013, 17:40     Файловый ввод-вывод
Ответ Создать тему
Опции темы

Текущее время: 07:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru