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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.84
Daedro
0 / 0 / 0
Регистрация: 18.06.2012
Сообщений: 9
#1

Потоковый ввод / вывод файлов - C++

22.06.2012, 05:33. Просмотров 4187. Ответов 5
Метки нет (Все метки)

Помогите пожайлуйста исправить ошибки в коде. В функции OemToChar пишет "char*" не совместим с параметром "LPWSTR"
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
 
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    //русская локаль 
    setlocale(LC_CTYPE, "Russian_Russia.1251"); 
 
    int wen=0, wru=0; //кол. слов английских и правильных ответов русских
    char sten[100]; //массив-строка для английского слова
    char stru[100]; //массив-строка для русского слова
    char sttest[100]; //что ввел пользователь при тесте
    
    cout << "Впишите перевод после =" << endl << endl;
 
    //откроем файл для чтения слов английских и перевода на русский
    ifstream f1( "enru.t", ios::in ); 
    //откроем файл для записи в него лога ответов (режим добавления)
    ofstream f2( "log.txt", ios::out|ios::ate|ios::app ); 
 
    //запись в лог пустой строки, чтоб зрительно отделать каждый запуск
    f2 << endl;
 
    //считываем строку из файла пока не конец файла
    while ( !f1.eof() )
        {
        //считаем строку-слово в sten (до символа = или до конца строки)
        f1.getline(sten, 100, '=');
        //считаем строку-слово в stru (до конца строки)
        f1.getline(stru, 100);
 
        wen++; //увеличим +1 кол. считанных англ. слов
        
        //вывести слово и ожидаем перевод
        cout << sten << "=";
        cin.getline(sttest, 100);
        OemToChar( sttest, sttest ); //преобразуем из OEM и поместим снова в sttest
 
        //проверим, что ответ совпал
        if( strcmp(stru, sttest) == 0 ) 
            {
            //запись в лог +, какое слово и каков был перевод
            f2 << "+ " << sten << "=" << sttest << endl;
            wru++; //увеличим кол. правильных переводов
            }
        else //иначе не совпал
            {
            //запись в лог -, какое слово и каков был перевод
            f2 << "- " << sten << "=" << sttest << endl;
            }
 
        }
 
    //подсчитаем процент правильных ответов
    int pr = 100*wru/wen;
 
    //выставляем оценку
    if( pr >= 95 )
        { //оценка отлично
        cout << "Оценка: отлично (" << pr << "% правильных ответов)" << endl;
        //запись в лог
        f2 << "Оценка: отлично (" << pr << "% правильных ответов)" << endl; 
        }
    else if( pr > 80 ) 
        { //оценка хорошо
        cout << "Оценка: хорошо (" << pr << "% правильных ответов)" << endl;
        //запись в лог
        f2 << "Оценка: хорошо (" << pr << "% правильных ответов)" << endl;
        }
    else if( pr >= 60 )
        { //оценка удовлетворительно
        cout << "Оценка: удовлетворительно (" << pr << "% правильных ответов)" << endl;
        //запись в лог
        f2 << "Оценка: удовлетворительно (" << pr << "% правильных ответов)" << endl;
        }
    else
        { //оценка плохо
        cout << "Оценка: плохо (" << pr << "% правильных ответов)" << endl;
        //запись в лог
        f2 << "Оценка: плохо (" << pr << "% правильных ответов)" << endl;
 
        cout << endl << "У вас плохие знания иностранного языка, вы можете воспользоваться литературой,"
            << endl << "предоставленной в библиотеке или помощью интернета для лучшего освоения данного предмета"
            << endl << endl << "Попробуйте в следующий раз!" << endl;
        }
 
        
 
    //закроем файл
    f1.close();
    //закроем файл
    f2.close();
 
    
    getch(); //ожидание ввода 1 символа
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 05:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Потоковый ввод / вывод файлов (C++):

Потоковый ввод/вывод - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main(int argc, char* argv) { FILE* in = fopen(&quot;xxx.txt&quot;,...

потоковый ввод - вывод - C++
всем доброго времени суток. мне вот недавно задали написать программу которая реализует несколько процедур стандартной библиотеки...

Потоковый ввод-вывод - C++
Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию Следует предусмотреть возможность выбора...

Потоковый ввод/вывод текста - C++
Добрый день! Помогите пожалуйста разобраться. Почему при вводе текста в консоли, он сохраняется каракулями? #include &lt;cstdlib&gt; ...

потоковый ввод и вывод строки С++ - C++
Ввести с клавиатуры строку символов. Вывести строку в обратном порядке на экран. В задаче использовать потоковый ввод и вывод строки

Потоковый ввод/вывод wchar_t - C++
Здравствуйте, есть простенький код #include &lt;fstream&gt; #include &lt;iterator&gt; #include &lt;cctype&gt; template&lt;class InputIt, class...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
22.06.2012, 05:45 #2
Строку
C++
1
int _tmain(int argc, _TCHAR* argv[])
заменить на
C++
1
int  main()
если жаль с ней расставаться, в свойствах проекта установите
кодировку символов на многобайтовую кодировку
Daedro
0 / 0 / 0
Регистрация: 18.06.2012
Сообщений: 9
22.06.2012, 06:02  [ТС] #3
Заменил, ошибка осталась

Добавлено через 6 минут
Цитата Сообщение от MrCold Посмотреть сообщение
1 int main(
Заменил, ошибка осталась
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
22.06.2012, 06:08 #4
Daedro, запустил , у меня работает .

Добавлено через 4 минуты
Daedro, у вас ЮНИКОД

Добавлено через 31 секунду
поэтому не работает

Добавлено через 1 минуту
в свойствах проекта установите кодировку символов на
НЕ ЗАДАНО
Daedro
0 / 0 / 0
Регистрация: 18.06.2012
Сообщений: 9
22.06.2012, 06:18  [ТС] #5
Спасибо большое, заработало
Daedro
0 / 0 / 0
Регистрация: 18.06.2012
Сообщений: 9
22.06.2012, 23:27  [ТС] #6
Помогите пжлст исправить прогу
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int i;
char *a=new char[255],*b=new char[255],c;
ifstream f1("f.txt" , ios::in);
ofstream f2("g.txt" , ios::out);
ofstream f3("f.txt" , ios::out|ios::trunc);
while (!f1.eof())
{
f1.getline(a, strlen(a));
cout<<a;
}
cout<<"Введенная строка:"<<endl;
for(i=0;i<strlen(a);i++)
{
cout<<a[i];
}
cout<<endl<<endl<<"Хотите ввести другую строку? (введите 'y', если да) ";
cin>>c;
if (c=='y')
{
cout<<"Введите строку:"<<endl<<endl;
cin.ignore(256,'\c');
cin.getline( a, strlen(a));
OemToChar(a,a);
f3<<a;
}
cout<<"Нажмите любую хнопку=)"<<endl;
getch();
cout<<"Обратная строка:"<<endl;
for (int j = 0 , i = strlen(a)-1 ; j < strlen(a) , i >= 0 ; j++ , i-- )
{
    b[j]=a[i];
    cout<<a[i];
}
f2<<b;
cout<<endl;
f1.close();
f2.close();
f3.close();
cout<<endl<<"Данные успешно сохранены";
getch();
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2012, 23:27
Привет! Вот еще темы с ответами:

Потоковый ввод-вывод. В уже созданном файле необходимо найти и заменить некоторую запись - C++
Всем доброго времени суток!!! Не могу справиться с лабораторной работой. В уже созданном файле необходимо найти и заменить некоторую...

Потоковый ввод и ввод данных. Работа с числами - C++
Ввести с экрана два нат. числа. Найти частное первого на второе и определить, встречается ли среду его дробной части цифра 3( рассматривать...

потоковый ввод - C++
всем привет! ситуация такая: при выполнении считываются только R2 и h, не могу понять, в чем дело. dev-c++ просто выдает &quot;step t =...

Потоковый ввод из файла - C++
Такой вопрос. Считываю данные из текстового файла с помощью потоков и записываю их в двусвязный список. В файле данных для 4 элементов...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.06.2012, 23:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru