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

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

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

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

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

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

4) При получении пути к программе функцией GetModuleFileName и последующем выводе этого пути в консоль функцией cout, названия папок на русском языке выводятся непонятными символами. В самой переменной путь храниться в нормальном виде (Пригоден ли он для подключения dll по этому пути)?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 16:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кодировки. Как сменить? Какая по умолчанию? Какую использовать? (C++):

Какую и как использовать функцию, чтобы float сделать int? - C++
Какую и как использовать функцию, чтобы float сделать int?

Как лучше спроектировать систему и какую архитектуру разработки приложения использовать? - C++
Всем привет, ситуация такая: Сейчас появилось время и решил снова заняться разработкой САПР для машиностроения. Для чего? Считаю...

Какую библиотеку использовать? - C++
Только начал изучение Си. Нужно написать программу, которая выводит сегодняшнюю дату в формате дд.мм.гггг Собственно, вопрос в сабже...

Какую программу необходимо использовать? - C++
Здравствуйте, уважаемые программисты! Подскажите пожалуйста какой программой необходимо пользоваться для создания программ на языке C?

Какую библиотеку использовать под GUI? - C++
Подскажите какую библиотеку использовать лучше/удобнее.Я слышал только про Qt, WTL, GTK. Или все же WinAPI изучать?

Какую ide лучше использовать для c++ - C++
какой ide лучше использовать для c++?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 22:58 #16
Или не отключать, но тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    wchar_t abs_path[MAX_PATH];
    int pathst = GetModuleFileName(NULL, (LPWSTR)abs_path, MAX_PATH);
    for (int i = 0; i <= MAX_PATH; i++)
        wcout << abs_path[i];
    cout << endl << endl;
 
    cout << "Это просто пробная строка на русском языке" << endl;
    
    system("pause");
1
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 22:59  [ТС] #17
Отключить в проекте юникод:
Это в Character Set?

Что выбрать из:
1) Non-set
2) Unicode
3) Multi-Byte
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:03 #18
Цитата Сообщение от Flaker Посмотреть сообщение
Это в Character Set?
1) Non-set
Цитата Сообщение от alsav22 Посмотреть сообщение
Или не отключать, но тогда так:
16 пост.
1
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 23:07  [ТС] #19
16 пост.
Попробовал, но теперь в консоль печатает только С:\Users\

( Код прежний )
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:12 #20
А лучше так:
C++
1
2
3
4
5
6
7
8
9
10
    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");
Добавлено через 1 минуту
Цитата Сообщение от Flaker Посмотреть сообщение
Попробовал, но теперь в консоль печатает только С:\Users\
А как же мой скрин?

Добавлено через 1 минуту
Цитата Сообщение от Flaker Посмотреть сообщение
Попробовал, но теперь в консоль печатает только С:\Users\
После Users\ , что должно быть?
1
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 23:13  [ТС] #21
А лучше так:
И даже так выводит только "С:\Users\"

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

Но если у пользователя шрифт в консоли точечный, то он не увидит русских символов?
0
alsav22
5419 / 4815 / 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 секунд
Или пишите по английски...
1
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
28.08.2013, 23:28  [ТС] #23
Без изменений в коде?
Макросы L убрал... А так без изменений...

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

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

setlocale(0, "") не помог, если юникод?
Уже не стал проверять.
0
alsav22
5419 / 4815 / 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");
}
2
Миниатюры
Кодировки. Как сменить? Какая по умолчанию? Какую использовать?  
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 23:42 #27
Но это так, чтобы знали...
1
AlukardBF
4 / 4 / 0
Регистрация: 20.08.2013
Сообщений: 24
29.08.2013, 10:52 #28
Я в Visual C++ использую
C++ (Qt)
1
setlocale(LC_ALL, "RUS");
По крайней мере вывод работает нормально. Плюс это все без отключения Юникода и замены шрифтов консоли.
0
zer0mail
2334 / 1960 / 192
Регистрация: 03.07.2012
Сообщений: 7,029
Записей в блоге: 1
29.08.2013, 11:09 #29
Это было: setlocale(0, "") работает, как setlocale(LC_ALL, "RUS")
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.08.2013, 16:02 #30
Цитата Сообщение от AlukardBF Посмотреть сообщение
По крайней мере вывод работает нормально.
В этом и проблема, что только вывод.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 16:02
Привет! Вот еще темы с ответами:

Как сменить путь по умолчанию в командной строке CMD? - CMD/BAT
Подскажите как сменить путь по умолчанию в командной строке CMD. Пробовал HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment...

Как сменить имя Текстовый документ.txt создаваемого по умолчанию - Windows
Скажите пожалуйста как сменить имя файла - Текстовый документ.txt создаваемое Windows по умолчанию на другое.

Как сменить текст кнопки по умолчанию в созданном мной классе - C#
Вобщем начал изучать программирование недели 3 назад,начал с VB.Net 2010 чего то бейсик мне показался не очень(ограниченный он какой то)...

Awesomium. Как использовать прокси и сменить UserAgent? - C#
Как изменить User Agent? Как использовать прокси? Хочу сделать так: нажал на кнопку - изменился User Agent. Нажал на другую -...


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

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

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