Страница 1 из 1
как использовать wprintf со строковыми переменными?
Добавлено: 16 июн 2004, 17:32
dimlevnik
Я хочу в консоли выводить из строковых переменных нормальные русские слова. А не чёрте чё.
Пытаюсь это делать так:
setlocale(LC_ALL, ".866");
wprintf(s);
s - это строковая переменная, при компиляции естественно пишет ошибку.
Как можно нормально перевести из типа wchar_t в типы string, char* и наоборот?
Добавлено: 16 июн 2004, 18:04
DeeJayC
string - это класс. Для того, чтобы из него строку получить надо сказать
Код: Выделить всё
std :: string s = "aaa";
printf("%s\n", s.c_str() );
Ищите strcpy, итд итп.
Добавлено: 16 июн 2004, 18:16
dimlevnik
Так
а вот это самое "ааа", по русски или как.
я сейчас попробовал с русскими, в консоле появились "ррр"
Добавлено: 16 июн 2004, 18:27
dimlevnik
да, вот ещё:
пытаюсь провести такое присвоение:
string sentence;
char *ss =sentence.c_str();
возникает ошибка, говорит что не может конвертировать const char* в char*
Добавлено: 16 июн 2004, 19:30
dimlevnik
Скажите пожалуйста, в случае такого кода:
string sentence("Привет всем");
const char *ss =sentence.c_str();
size_t size = strlen (ss) + 1;
wchar_t *buf =(wchar_t *) malloc (size * sizeof (wchar_t));
size = mbstowcs (buf, ss, size);
wprintf(L"%s \n",buf);
должен ли текст "Привет всем" в консоле выводится по русски?
Добавлено: 16 июн 2004, 19:44
Romeo
Естестевенно ошибка. Надо писать:
а если строка должна модифицироваться, то нужно воспользоваться буфером:
Код: Выделить всё
char strBuf[100];
strncpy(strBuf, sentence.c_str(), 100);
Добавлено: 16 июн 2004, 19:55
dimlevnik
А как в консоле русские слова писать?
Добавлено: 17 июн 2004, 00:18
Andy
А как в консоле русские слова писать?
API OemToChar()/CharToOem()
Добавлено: 17 июн 2004, 09:19
Hawk
Лучше пользоваться API MultibyteToWideChar и наоборот. Там можно задать кодовую страницу чтобы точно быть уверенным какая конвертация будет произведена.
Добавлено: 18 июн 2004, 18:54
dimlevnik
1. спасибо за функции, я их попробовал
2. ещё попробовал перевод с помощью смещения кода буквы
как вы думаете что лучше?