Страницы

Поиск по вопросам

вторник, 24 декабря 2019 г.

Русский текст в программах [дубликат]

#visual_studio #cpp #visual_cpp


        
             
                
                    
                        
                            This question already has answers here:
                            
                        
                    
                
                        
                            Русский язык в консоли
                                
                                    (4 ответа)
                                
                        
                                Закрыт 4 года назад.
            
                    
Мне приходится писать английскими буквами русские слова в консольных приложениях.
Сама программа русская (У мне Visual Studio 2010 express). Подскажите, что нужно сделать
для возможности выводить русские буквы?
Заранее спасибо.
Нашел ответ(если кому надо) 
#include  
int main()
{  
setlocale(LC_ALL,"RUS");
    


Ответы

Ответ 1



Способ 1: используй wcout: #include using namespace std; void main() { wcout.imbue(locale(".866")); wcout << L"Привет, Мир!"; } Еще как вариант, можно подключить и использовать SetConsoleOutputCP(1251) Но у меня в 7ке почему-то этот способ не заработал, влом было разбираться. Но вроде для него надо было еще в настройках проекта какую-то галочку переключить, в общем, используй wcout, он и лучше, и работает не только в винде. Способ 2: Вспомнил еще один способ, пожалуй самый простой: setlocale(LC_ALL, "Russian"); cout << "Привет, Мир!" << endl;

Ответ 2



Ничего не надо устанавливать. В идентификаторах разрешена только латиница. А в юникодных строках можно писать любые символы, включая китайские иероглифы. Пример. #include int main() { wprintf(_T("Привет, мир\n")); return 0; } То, что пишется в строках: "Привет, мир" и т.п., должно помещаться внутрь макроса _T() для юникодных строк, а все остальное должно быть латиницей (за исключением комментариев).

Ответ 3



Попробуйте этот вариант. ostream & operator<<(ostream & out,char* s) { char buf[512],*p=buf; CharToOem(s,buf); while(*p) out<<*p++; return out; }

Ответ 4



Компилируя консольные приложения на славном языке программирования C++ постоянно сталкиваешься с проблемой кодировок. Русские буквы выводятся каракулями, а с английскими все в порядке. Дело в кодировках. В консоли Windows используется кодировка OEM. А в самой ОС Windows - ANSI кодировка. Для избежания проблем с выводом русских букв в консоль мы будем пользоваться функцией CharToOem. Функция CharToOem преобразует строку в набор символов ОЕМ. Эта функция противоположна функции AnsiToOem. Думаю вопрос закрыт :)

Ответ 5



Ещё как вариант можно использовать _cwprintf, но она есть только в Visual C++.

Ответ 6



Не знаю, сработает ли, но можно попробовать, например, если есть вариант в чар массиве на английском в ASCII таблице найти и заменить на русские, ну, например, (это только пример) английская буква А имеет цифру 20, а русская 60. Вы делаете функцию, которой, если дать массив, она заменит 20 цифру на 60, и программа покажет русскую а, но это с оператором cin не провернуть, наверное, не знаю.

Комментариев нет:

Отправить комментарий