как использовать wprintf со строковыми переменными?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Я хочу в консоли выводить из строковых переменных нормальные русские слова. А не чёрте чё.
Пытаюсь это делать так:
setlocale(LC_ALL, ".866");
wprintf(s);
s - это строковая переменная, при компиляции естественно пишет ошибку.
Как можно нормально перевести из типа wchar_t в типы string, char* и наоборот?
Пытаюсь это делать так:
setlocale(LC_ALL, ".866");
wprintf(s);
s - это строковая переменная, при компиляции естественно пишет ошибку.
Как можно нормально перевести из типа wchar_t в типы string, char* и наоборот?
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
string - это класс. Для того, чтобы из него строку получить надо сказать
Ищите strcpy, итд итп.
Код: Выделить всё
std :: string s = "aaa";
printf("%s\n", s.c_str() );
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
Так
а вот это самое "ааа", по русски или как.
я сейчас попробовал с русскими, в консоле появились "ррр"
а вот это самое "ааа", по русски или как.
я сейчас попробовал с русскими, в консоле появились "ррр"
да, вот ещё:
пытаюсь провести такое присвоение:
string sentence;
char *ss =sentence.c_str();
возникает ошибка, говорит что не может конвертировать const char* в char*
пытаюсь провести такое присвоение:
string sentence;
char *ss =sentence.c_str();
возникает ошибка, говорит что не может конвертировать const char* в char*
Скажите пожалуйста, в случае такого кода:
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);
должен ли текст "Привет всем" в консоле выводится по русски?
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);
должен ли текст "Привет всем" в консоле выводится по русски?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Естестевенно ошибка. Надо писать:
а если строка должна модифицироваться, то нужно воспользоваться буфером:
Код: Выделить всё
const char *ss =sentence.c_str();
Код: Выделить всё
char strBuf[100];
strncpy(strBuf, sentence.c_str(), 100);
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
А как в консоле русские слова писать?
API OemToChar()/CharToOem()А как в консоле русские слова писать?
*provided AS IS
Лучше пользоваться API MultibyteToWideChar и наоборот. Там можно задать кодовую страницу чтобы точно быть уверенным какая конвертация будет произведена.
1. спасибо за функции, я их попробовал
2. ещё попробовал перевод с помощью смещения кода буквы
как вы думаете что лучше?
2. ещё попробовал перевод с помощью смещения кода буквы
как вы думаете что лучше?