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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.98
to
19 / 19 / 0
Регистрация: 28.10.2010
Сообщений: 296
#1

Преобразование типов wchar_t в char и обратно - C++

12.09.2012, 21:19. Просмотров 9073. Ответов 30
Метки нет (Все метки)

Добрый вечер уважаемые форумчане! Как можно перевести из wchar_t в char и обратно. Если можно с примерами. За ранее спасибо!!

Добавлено через 1 минуту
нашел такие функции
MultiByteToWideChar
WideCharToMultiByte
но не знаю как ними пользоваться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2012, 21:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование типов wchar_t в char и обратно (C++):

Преобразование wchar_t в char - C++
Как преобразовать wchar_t в char ? Получаю wszName через MIB_IFTABLE.

Преобразование char* в const wchar_t * - C++
Есть кусок кода, при компиляции выскакивает ошибка о о неудачном преобразовании типов(вышеназванных) int i = 0; std::string line; ...

Преобразование const char >>wchar_t >>LPWSTR - C++
Здравствуйте. Хотел чтобы прога сама определяла нужный ком порт путём перебора. Путём сложения нескольких чаров получается 3-й чар, который...

Преобразование int char и обратно - C++
надо разложить число на два байта... unsigned char ghj; int fff = 11111; ghj = fff / 256; ghj = fff - (ghj * 256); //обратно ...

Продемонстровать неявное преобразование типов: из целого в вещественный и обратно - C++
Помогите решить задачи по С++, никак не могу, вся надежда только на вас. 1. Даны вещественные и целые числа. Наглядно продемонстрируйте...

Преобразование типов (long -> массив char) - C++
Здравствуйте! имеется функция void sendchar(unsigned char data);не могу ее использовать т.к. не знаю как преобразовать long в...

30
to
19 / 19 / 0
Регистрация: 28.10.2010
Сообщений: 296
13.09.2012, 13:12  [ТС] #16
А если у меня есть строка типа wstring по чему я не могу проверять так как обычную string на наличие каких-либо символов?
C++
1
2
3
4
wstring str=L"c:\\*.*"
for(int i=0;i<8;i++)
if(str[i]=="*")
 // удаляю символ из строки
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.09.2012, 13:23 #17
Из чего следует, что не можете? i объявите вне for().
0
to
19 / 19 / 0
Регистрация: 28.10.2010
Сообщений: 296
13.09.2012, 13:28  [ТС] #18
ошибку выдает компилятор

Добавлено через 39 секунд
еrror C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'

Добавлено через 1 минуту
error C2446: '==' : no conversion from 'const char *'
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.09.2012, 13:38 #19
Код нужно видеть, чтобы понять. Я же не телепат.
0
_stealth_
16 / 16 / 1
Регистрация: 07.06.2012
Сообщений: 100
13.09.2012, 13:48 #20
Да, нету
C++
1
2
3
4
5
6
7
8
9
#include <string>
#include <algorithm>
//...
std::string str = "Hello";
std::wstring str2(str.length(), L' '); // Make room for characters
 
// Copy string to wstring.
std::copy(str.begin(), str.end(), str2.begin());
//...
Еще не плохо справляется оператор << (у меня linux правда)
0
to
19 / 19 / 0
Регистрация: 28.10.2010
Сообщений: 296
13.09.2012, 14:49  [ТС] #21
Цитата Сообщение от to Посмотреть сообщение
C++
1
2
3
4
wstring str=L"c:\\*.*"
for(int i=0;i<8;i++)
    if(str[i]=="*")
        // удаляю символ из строки
по чему я не могу проверить строку wstring как обычную string
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
13.09.2012, 14:53 #22
to, Гм. Вы и строку так не проверите откровенно говоря.

C++
1
2
3
4
wstring str=L"c:\\*.*"
for(int i=0;i<8;i++)
if(str[i] == L'*')
// удаление
0
to
19 / 19 / 0
Регистрация: 28.10.2010
Сообщений: 296
13.09.2012, 22:50  [ТС] #23
еще такой вопрос, а как можно скопировать с одной строки wstring в другую определенное количество символов? Делал так
C++
1
2
wstring temp, puth;
strncpy(temp,puth,puth.length() -3);
но компилятор ругается на то что не может перевести переменную temp в char
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.09.2012, 01:45 #24
C++
1
2
3
wstring temp;
wstring puth = L"abcdef";
temp.insert(0, puth, 0, puth.size() - 3);
Применяйте методы для класса string.
0
to
19 / 19 / 0
Регистрация: 28.10.2010
Сообщений: 296
16.09.2012, 12:28  [ТС] #25
написал что-то похожее на правду, но все же, при обходе вложенных папок открывается только одна папка и распечатывается ее содержимое, а все остальные остаются не открытыми. в чем ошыбка? Нужно ли в функцию передавать Handle и структуру Win32_find_File
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
void Search_File(wstring puth )
{
    wstring buf,temp;
    wstring mask=L"\\*.*";
    buf.insert(0,puth,0,puth.length());
    buf.insert(buf.length(),mask,0,mask.length());
    WIN32_FIND_DATA FindFileData;
    HANDLE hf=FindFirstFile(buf.c_str(), &FindFileData);
    if(hf != INVALID_HANDLE_VALUE)
    {
        while(FindNextFile(hf,&FindFileData)!=0)
        {
            temp=FindFileData.cFileName;
            if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&(temp.find('.')==string::npos))
            {
                printf("%S \n", FindFileData.cFileName);
                puth.insert(puth.length(),L"\\",0,2);
                puth.insert(puth.length(),temp,0,temp.length());
                Search_File(puth);
            }
            else 
                printf("%S \n",FindFileData.cFileName);
        }
    }
    
 
}
0
Демон-13
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 104
18.07.2017, 20:04 #26
Помогите пожалуйста разобраться, ни как не могу понять как перевести из unsigned char в wchar_t, вот в этой строке проблема:
strcpy(bufwr, Form1->Edit1->Text.c_str());
При этом если просто поменять: unsigned char bufrd[BUFSIZE],bufwr[BUFSIZE];
На: wchar_t bufrd[BUFSIZE],bufwr[BUFSIZE];
То ошибка уже будет в другой строке: write(handle, bufrd, strlen(bufrd));
Предполагаю, что нужно в этом случае преобразовать тип переменной bufrd в char, но как это сделать на пойму...
0
nd2
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
18.07.2017, 22:31 #27
http://www.cplusplus.com/reference/cwchar/
0
Демон-13
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 104
19.07.2017, 20:08 #28
Пока не понял, что вы хотели сказать своей ссылкой Подскажите на что обратить внимание? Посмотрел по вашей ссылки "преобразование", вроде подходящих нету...
0
nd2
2392 / 1981 / 696
Регистрация: 29.01.2016
Сообщений: 6,440
19.07.2017, 20:46 #29
Цитата Сообщение от Демон-13 Посмотреть сообщение
что вы хотели сказать своей ссылкой
То, что для wchar_t есть свои функции, а не strlen(), strcpy(), и пр.
0
Renji
2002 / 1370 / 309
Регистрация: 05.06.2014
Сообщений: 3,904
20.07.2017, 02:55 #30
Цитата Сообщение от Демон-13 Посмотреть сообщение
Помогите пожалуйста разобраться, ни как не могу понять как перевести из unsigned char в wchar_t
В такой формулировке и не сможете - преобразование из char (8 бит) в wchar_t (16/32 бита) требует преобразования кодировки текста. А что там у вас за кодировка по простому "char" не понять. Да и в любом случае C++ "из коробки" поддерживает только преобразование из одного юникода в другой.

Используйте везде одну кодировку, а значит и не смешивайте char с wchar_t. Если же очень охота смешивать - ну, MultiByteToWideChar и WideCharToMultiByte тут уже упоминали.
0
20.07.2017, 02:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2017, 02:55
Привет! Вот еще темы с ответами:

Wchar_t to char - C++
я тут обнаружил любопытнейшую вещь, оказывается можно просто присваивать char = wchar_t и наоборот ! просто хочу убедиться это как бы без...

Типы char and wchar_t - C++
Добрый день ! Хочу уточнить по поводу wchar_t известно что размер строки char всегда больше на 1 символ char str = &quot;Hello&quot;; ...

Char, TCHAR, wchar_t - C++
Как правильно записать эти 2 участка кода . Ошибки - 1&gt;d:\c++\lab1\lab1\main.cpp(54): error C2664: strcpy: невозможно преобразовать...

Приведение char* к wchar_t* - C++
Доброго времени суток. Возникла следующая проблема.. есть код, который конвертит string в wchar_t const wchar_t* STDStrToWCHAR(const...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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