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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
#1

Кодировки. Как сменить? Какая по умолчанию? Какую использовать? - C++

28.08.2013, 16:57. Просмотров 2703. Ответов 31
Метки нет (Все метки)

1) Какая кодировка стоит по умолчанию в C++ проектах visual studio 10?
2) Как эту кодировку сменить?
3) Как сделать возможным использование русского и других языков в программе

4) При получении пути к программе функцией GetModuleFileName и последующем выводе этого пути в консоль функцией cout, названия папок на русском языке выводятся непонятными символами. В самой переменной путь храниться в нормальном виде (Пригоден ли он для подключения dll по этому пути)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 16:57     Кодировки. Как сменить? Какая по умолчанию? Какую использовать?
Посмотрите здесь:
Какую и как использовать функцию, чтобы float сделать int? C++
Как лучше спроектировать систему и какую архитектуру разработки приложения использовать? C++
C++ Какую библиотеку использовать?
Какую ide лучше использовать для c++ C++
C++ Какую библиотеку использовать под GUI?
C++ Почему нельзя в конструкторе использовать параметр по умолчанию, если конструктор не встроен?
Какую среду разработки лучше использовать новичку? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 23:13  [ТС]     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #21
А лучше так:
И даже так выводит только "С:\Users\"

Сменил на Non-set, показано теперь нормально все...

Но если у пользователя шрифт в консоли точечный, то он не увидит русских символов?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:23     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #22
Наверное, что-то по русски после Users\? Попробуйте, в начале main(), добавить:
C++
1
setlocale(0, "");
Может поможет. Проверить нет возможности.

Добавлено через 1 минуту
Цитата Сообщение от Flaker Посмотреть сообщение
Сменил на Non-set, показано теперь нормально все...
Без изменений в коде?

Добавлено через 1 минуту
Цитата Сообщение от Flaker Посмотреть сообщение
Но если у пользователя шрифт в консоли точечный, то он не увидит русских символов?
Кодировки - это головная боль...

Добавлено через 57 секунд
Или пишите по английски...
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 23:28  [ТС]     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #23
Без изменений в коде?
Макросы L убрал... А так без изменений...

Спасибо за помощь)
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:33     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #24
setlocale(0, "") не помог, если юникод?

Добавлено через 1 минуту
Цитата Сообщение от Flaker Посмотреть сообщение
Макросы L убрал...
Это где?
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 23:39  [ТС]     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #25
Это где?
Ой, забыл, что сюда не выкладывал... Это уже остальная часть программы...

setlocale(0, "") не помог, если юникод?
Уже не стал проверять.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:41     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #26
Цитата Сообщение от Flaker Посмотреть сообщение
Уже не стал проверять.
А зря, помогает. Сейчас специально добавил в путь русского:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <Windows.h>
using namespace std;
 
int main()
{
    setlocale(0, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    wchar_t abs_path[MAX_PATH];
    int pathst = GetModuleFileName(NULL, (LPWSTR)abs_path, MAX_PATH);
    wcout << abs_path << endl;
    
    cout << "Это просто пробная строка на русском языке" << endl;
    
    system("pause");
}
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:42     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #27
Но это так, чтобы знали...
AlukardBF
4 / 4 / 0
Регистрация: 20.08.2013
Сообщений: 24
29.08.2013, 10:52     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #28
Я в Visual C++ использую
C++ (Qt)
1
setlocale(LC_ALL, "RUS");
По крайней мере вывод работает нормально. Плюс это все без отключения Юникода и замены шрифтов консоли.
zer0mail
2323 / 1949 / 192
Регистрация: 03.07.2012
Сообщений: 6,996
Записей в блоге: 1
29.08.2013, 11:09     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #29
Это было: setlocale(0, "") работает, как setlocale(LC_ALL, "RUS")
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.08.2013, 16:02     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #30
Цитата Сообщение от AlukardBF Посмотреть сообщение
По крайней мере вывод работает нормально.
В этом и проблема, что только вывод.
zer0mail
2323 / 1949 / 192
Регистрация: 03.07.2012
Сообщений: 6,996
Записей в блоге: 1
29.08.2013, 16:18     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #31
Со вводом проблемы, универсального решения я не знаю, а варианты вот: О кодировках, кодовых страницах и проблемах вывода на консоль
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 16:58     Кодировки. Как сменить? Какая по умолчанию? Какую использовать?
Еще ссылки по теме:
C++ Какую запись переменных в цикле for лучше использовать?
Какую функцию ввода строки с клавиатуры использовать? C++
C++ Error C4519: аргументы шаблона по умолчанию можно использовать только в шаблоне класса
C++ Какую функцию STL использовать для работы с множеством ?
Подскажите, какую базу данных использовать проще всего C++

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,455
Завершенные тесты: 1
29.08.2013, 16:58     Кодировки. Как сменить? Какая по умолчанию? Какую использовать? #32
Просто для справки.
Yandex
Объявления
29.08.2013, 16:58     Кодировки. Как сменить? Какая по умолчанию? Какую использовать?
Ответ Создать тему
Опции темы

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