Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
BORSHEVIK
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29
#1

Проблемы с кодировкой при выводе данных - C++

28.01.2013, 17:32. Просмотров 651. Ответов 2
Метки нет (Все метки)

Пользуюсь хрюшей и VS 2008
Программа 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
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    char ch='x';
    int j=77;
    double d=6.02;
    string str1="Kafka";
    string str2="Proust";
    ofstream outfile("fdata.txt");
    outfile<<ch
           <<' '
           <<j
           <<' '
           <<d
           <<' '
           <<str1
           <<' '
           <<str2;
cout<<"Файл записан!\n";
return 0;
}
Программа 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    char ch;
    int j;
    double d;
    string str1;
    string str2;
    ifstream infile("fdata.txt");
    infile>>ch>>j>>d>>str1>>str2;
    cout<<"1:"<<ch<<endl
        <<"2:"<<j<<endl
        <<"3:"<<d<<endl
        <<"4:"<<str1<<endl
        <<"5:"<<str2<<endl;
cout<<"Вывод информации с файлf завершён!\n";
return 0;
}
Вот результат 2-й программы в консоле:
1:K
2:1242200
3:3.04544e-308
4:
5:
Вывод информации с файл завершён!
Для продолжения нажмите любую клавишу . . .


добавление строки
C++
1
infile.imbue(locale(".1251"));
не помогло.

1 программа работает как надо,её суть состоит в том,чтобы записать на fdata.txt данные, 4-х разных типов,прописанных в программе,она их туда закидывает,проверял,всё чётко,НО....
2 программа работает плохо. Она должна была считать данные из файла,который был создан в 1-ой программе,но,может он и открывает его,но считывает полную ересь,неизвестные данные,взятые из ни от куда,причём строковые переменные он вообще не выводит,а первый символ типа char при каждой компиляции выводит ЛЮБОЙ символ. Я подозреваю,что проблема с потоком и в него вмешиваются посторонние данные,но и с другой стороны это не логично,т.к. есть чёткие функции,а если они туго работают,то и смысла бы в них не было,к тому же данные типа int и double он выводит тоже другие,но они статичны при каждой компиляции,думаю,что просто банальная проблема в кодировке при выводе из файла или ХЗ что.Прошу помочь ибо не знаю,что делать!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2013, 17:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемы с кодировкой при выводе данных (C++):

Проблемы с кодировкой при сравнении строк - C++
Здравствуйте! Мне, нужно сравнить две строки: одну получаю get запросом(на сайте кодировка windows 1251), а вторая указывается...

Проблемы с кодировкой при подключении текстового файла - C++
Проблема вот в чем...В файле question.txt лежит вопрос, написанный по русски, но когда в консоле я вывожу содержимое &quot;question.txt&quot; на...

Проблемы с кодировкой при переключении из Debug в Release в MSVS 2010 - C++
Собираю проект в режиме дебаг все символы норм отображаются,переключаю на релиз и одни кракозябры, в чем может быть дело ?

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

Личные цифры при выводе данных - C++
У меня в этом коде почему то при выводе результата появится личные цифры такие 2009424020 #include &lt;iostream&gt; using namespace std; ...

Проблемы с кодировкой символов - C++
/*Письмо президенту*/ #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); ...

2
hinst
22 / 8 / 1
Регистрация: 06.01.2013
Сообщений: 113
28.01.2013, 17:46 #2
ЭХХХХ
только что прогнал твои программы на Visual C++ 2010 на Windows 7, слив их в одну вот так вот:
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
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main1()
{
    setlocale(LC_ALL,"Russian");
    char ch='x';
    int j=77;
    double d=6.02;
    string str1="Kafka";
    string str2="Proust";
    ofstream outfile("fdata.txt");
    outfile<<ch
           <<' '
           <<j
           <<' '
           <<d
           <<' '
           <<str1
           <<' '
           <<str2;
cout<<"Файл записан!\n";
return 0;
}
 
int main2()
{
    setlocale(LC_ALL,"Russian");
    char ch;
    int j;
    double d;
    string str1;
    string str2;
    ifstream infile("fdata.txt");
    infile>>ch>>j>>d>>str1>>str2;
    cout<<"1:"<<ch<<endl
        <<"2:"<<j<<endl
        <<"3:"<<d<<endl
        <<"4:"<<str1<<endl
        <<"5:"<<str2<<endl;
cout<<"Вывод информации с файлf завершён!\n";
return 0;
}
 
int main()
{
    main1();
    main2();
}
выводит

1:x
2:77
3:6.02
4:Kafka
5:Proust

Problem?
Запускал из PowerShell. Я думаю, что, возможно, проблема в том, что у консоли своя кодировка. То есть, в файл всё может записываться правильно, и читаться может правильно. Просто напросто может кодировка файла и консоли не совпадать; у виндоконсоли по умолчанию кодировка cp 866. А не 1251. И она, как и 1251 считается локальной и правильной для рус. языка, да...
А вообще... Да кто его знает??? @_@ @_@ @_@
0
BORSHEVIK
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29
28.01.2013, 17:59  [ТС] #3
Ка бы это по-идиотски не звучало,но проблема состояла в шрифте консоли(нужно установить lucida console),нужно было его тупо поменять и всё стало работать как надо....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 17:59
Привет! Вот еще темы с ответами:

При выводе данных char исчезает первый элемент - C++
Вот моя программа class Colect { public: Colect(); void Input(); void Output(); private: char *name; int year;

Добавляются лишние символы при выводе данных в поток - C++
Есть char buff; куда пишутся данные с сети. вывожу на печать: cout &lt;&lt;&quot;IMEI- &quot; &lt;&lt; &quot;--&quot; &lt;&lt; buff&lt;&lt;buff&lt;&lt;buff ...

При выводе данных в файл стереть всё, что в нём было - C++
Всем добрый день. Подскажите, пожалуйста, как при выводе данных в файл, первым делом стереть всё, что в нём вначале было? :)

Кирилица отображается нормально при выводе из программы, но иероглифы при вводе в консоль - C++
Что надо подключить что бы в консоли писать русскими буквами? cin &gt;&gt; kol; cin &gt;&gt; x; cout &lt;&lt; &quot;У вас есть &quot; &lt;&lt; kol &lt;&lt; &quot; &quot; &lt;&lt; x; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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