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

Непонятка с кодировкой - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Порекомендуйте задачи по функциям http://www.cyberforum.ru/cpp-beginners/thread339142.html
Плиз дайте задачек по функциям очень надо!
C++ Отладка :) Доброго времени суток. Подскажите пожалуйста! Делаю отладку в Visual Studio. Хочу чтобы выполнилось условие if. Какое сочетание клавиш использовать? Заранее спасибо :) http://www.cyberforum.ru/cpp-beginners/thread339140.html
C++ Ошибка
Народ, здарова!!! Тупой вопрос, почему не работает функция #include<iostream.h> #include<conio.h> #include<string.h> enum Shape{prizm,parallelepiped,cube,pyramid,cone,cylinder}; class Body...
C++ вставка своего алгоритма в контекстное меню
Создал небольшой алгоритм редактирующий текст. Хочу сделать так, что бы он работал при нажатии на выделенный текст правой кнопкой и выбором соответствующего пункта из списка, или нажатием комбинации...
C++ здравствуйте, можете объяснить? http://www.cyberforum.ru/cpp-beginners/thread339096.html
Я нашел код в разделе "для профессионалов" - там задачка, которая решается с помощью формулы Зеллера..... #include <iostream> int main() { int year, mon, day, yyear, hund, dday; ...
C++ Зачем в случае присваивания делают ссылку/указатель на аргумент константным Здравствуйте, позвольте я задам вопрос по С++ 1) void Class::set(const int & i) { qwerty = i; } Зачем в случае присваивания делают ссылку/указатель на аргумент константным подробнее

Показать сообщение отдельно
Oleg_SK
5 / 5 / 2
Регистрация: 15.09.2010
Сообщений: 25
05.08.2011, 06:53  [ТС]
OstapBender
У меня предложенный вариант тоже нормально отрабатывает, но тут затык в том, что стоит в этот код добавить вывод в консоль текста заданного в программе (например: wcout << L"Введите строку на русском: ") и работа программы сразу становится некорректной... Чтобы это исправить приходится вставлять в код строку: setlocale( LC_ALL, "russian_Russia.1251" ), но после ее вставки начинается безобразие с выводом текста полученного от getline... Хочу попробовать похимичить с командой setlocale. Подскажите, плиз, как отменить действие команды setlocale( LC_ALL, "russian_Russia.1251" ), чтобы кодировка вернулась на дефолтную?

Добавлено через 29 минут
Вроде бы разобрался! В таком виде программа работает:
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 "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
 
using std::wstring;
using std::getline;
using std::wcout;
using std::wcin;
using std::endl;
 
int _tmain(int argc, _TCHAR* argv[])
{
    wstring c;
 
        setlocale( LC_ALL, "russian_Russia.1251" );
    wcout << L"Тест_1" << endl;
 
    setlocale(LC_ALL, "russian_Russia.866");
    getline(wcin,c);
    wcout << c << endl;
 
    setlocale( LC_ALL, "russian_Russia.1251" );
    wcout << L"Тест_2" << endl;
 
    wcout << endl;
    system("PAUSE");
    return 0;
}
То есть, перед выводом в консоль заданного в программе текста нужно давать команду: setlocale( LC_ALL, "russian_Russia.1251" ), а перед вызовом getline давать команду: setlocale(LC_ALL, "russian_Russia.866")...

Добавлено через 24 минуты
Осталось еще разобраться: как перекодировать строки из 866 кодировки в 1251 или обратно для типа wstring, чтобы можно было сравнивать строки введенные через getline со строками заданными в тексте программы... Может быть кто-нибудь знает, как это можно сделать?

Добавлено через 19 минут
Кажись опять сам разобрался. Вроде бы для сравнения строк не нужно приводить их к одной кодировке, т.к. метод compare класса wstring сам прекрасно с этим справляется...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.