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

Из потока вместо кириллицы вводится что попало - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.11.2012, 10:21     Из потока вместо кириллицы вводится что попало #1
C++
1
2
3
4
5
setlocale( LC_ALL,"" );
std::cout<<"Введите строку: ";
Log.open("log.txt");
getline(std::cin, s);
std::cout<<"."<<std::endl<<Введённая строка: "<<s<<std::end;
После "Введённая строка: " выводятся иероглифы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
07.11.2012, 10:24     Из потока вместо кириллицы вводится что попало #2
Не уверен или поможет, но всё же:
C++
1
locale loc("russian_Russia.1251");
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.11.2012, 10:31  [ТС]     Из потока вместо кириллицы вводится что попало #3
А эту строку code blocks вообще не принимает, пишет
C:\tsserver\Projects\cpp\codeblocks\Simoron\Simoron.cpp||In function 'int main()':|
C:\tsserver\Projects\cpp\codeblocks\Simoron\Simoron.cpp|16|error: 'locale' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\Simoron\Simoron.cpp|16|error: expected ';' before 'loc'|
||=== Build finished: 2 errors, 0 warnings ===|
.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
07.11.2012, 10:40     Из потока вместо кириллицы вводится что попало #4
Пишу в MVS 2010
В текстовом файле записана строка кириллицей. На выходе эта строка в нормальном виде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
    setlocale(0,".1251");
    ifstream in("1.txt");
    string s;
    in>>s;
    cout<<s<<endl;
    system("pause");
    return 0;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.11.2012, 10:56  [ТС]     Из потока вместо кириллицы вводится что попало #5
А так, наоборот, портится весь остальной вывод, но ввод нормальный и введённая строка выходит без искажений.

Добавлено через 1 минуту
И мне надо именно через getline, там есть пробелы.

Добавлено через 6 минут
Мне надо, чтоб и вводилось в ansi 1251, и выводилось читабельно, причём, и введённое с клавиатуры, и набранное прямо в исходнике. И именно через getline.

Добавлено через 6 минут
Что то и так стало, как в первом посте.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
07.11.2012, 11:11     Из потока вместо кириллицы вводится что попало #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
#include <iostream>
#include <locale>
#include <string>
#include <windows.h> 
 
using namespace std;
 
string  RUS(const string&  DOS_string)
{   
    char*  p_buf = new char[DOS_string.length() + 1];
    OemToCharA(DOS_string.c_str(), p_buf);
    string  res(p_buf);
    delete[] p_buf;
    return res;
}
 
int main()
{
    locale::global(locale(""));
    cout << "Введите русский текст:\n";
    
    string  myRussianString;
    getline(cin, myRussianString);
    string  s = RUS(myRussianString);
    cout <<"Получите русский текст:\n"<<s<<"\n";
 
    cin.get();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 11:31     Из потока вместо кириллицы вводится что попало
Еще ссылки по теме:

Переполнение потока или же что-то иное C++
C++ Русский шрифт вводится как попало
C++ Русский шрифт вводится, как попало

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.11.2012, 11:31  [ТС]     Из потока вместо кириллицы вводится что попало #7
Спасибо, всё получилось.
Yandex
Объявления
07.11.2012, 11:31     Из потока вместо кириллицы вводится что попало
Ответ Создать тему
Опции темы

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