| 
    
            
         
         | 
    
    
  | 
С/С++ конвертация из char* UTF-8 в wchar_t* UTF-16LE | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:06 
 | 
         
        Требуется С/С++ конвертация из char* UTF-8 в wchar_t* UTF-16LE
 
        Собственно как проще всего, желательно кроссплатформенно, но хватит и под VS для Windows.  | 
|||
| 
    1
    
        trdm    
     27.06.19 
            ✎
    15:15 
 | 
         
        (0) Qt     
         | 
|||
| 
    2
    
        crasler    
     27.06.19 
            ✎
    15:25 
 | 
         
        iconv     
         | 
|||
| 
    3
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:26 
 | 
         
        Я просил простейший это примерно как сказать ICU или MultiByteToWideChar     
         | 
|||
| 
    4
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:28 
 | 
         
        (2) Пример?
 
        У меня есть проект ВК на C++ (под VS2017) как туда это сделать?  | 
|||
| 
    5
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:29 
 | 
         
        Блин гуглить то я умею, я пока далеко не сеньор С++ и даже не мидл а только на уровне джуна блин.     
         | 
|||
| 
    6
    
        crasler    
     27.06.19 
            ✎
    15:30 
 | 
         
        (3) 
 
        #include <iostream> #include <fstream> #include <iconv.h> int main(int argc, char *argv[]) { char src[] = "abcčde"; char dst[100]; size_t srclen = 6; size_t dstlen = 12; fprintf(stderr,"in: %s\n",src); char * pIn = src; char * pOut = ( char*)dst; iconv_t conv = iconv_open("UTF-8","UTF-16LE"); iconv(conv, &pIn, &srclen, &pOut, &dstlen); iconv_close(conv); fprintf(stderr,"out: %s\n",dst); }  | 
|||
| 
    7
    
        Вафель    
     27.06.19 
            ✎
    15:30 
 | 
         
        и что на stack'е нет ответа?     
         | 
|||
| 
    8
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:31 
 | 
         
        (6) iconv.h для VS где взять? Как прилинковать в DLL ?     
         | 
|||
| 
    9
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:32 
 | 
         
        (6) И это только проблему кодировки решит а еще надо wchar_t* на выходе вместо char*     
         | 
|||
| 
    10
    
        ДенисЧ    
     27.06.19 
            ✎
    15:32 
 | 
||||
| 
    11
    
        H A D G E H O G s    
     27.06.19 
            ✎
    15:33 
 | 
         
        Я знал, что увижу эту тему.     
         | 
|||
| 
    12
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:33 
 | 
         
        (10) Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.     
         | 
|||
| 
    13
    
        crasler    
     27.06.19 
            ✎
    15:33 
 | 
         
        (9) Что трудно wchar_t *w = (wchar_t*) pOut
 
        http://gnuwin32.sourceforge.net/packages/libiconv.htm  | 
|||
| 
    14
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:34 
 | 
         
        (11) Я тоже поэтому и отложил сначала и тему поднимал.
 
        С++ придумывали одни извращенцы для того чтобы другие хорошенько полюбились. Как было замечательно даже на паскале...  | 
|||
| 
    15
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:38 
 | 
         
        (13) В голанге это выглядит так:
 
        
     | 
|||
| 
    16
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:38 
 | 
         
        (15) к (14)     
         | 
|||
| 
    17
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:39 
 | 
         
        (12) Блин забыл в ""
 
        Искать я умею в инете, вот рабочего нихрена нет чтобы из коробки взлетело без обработки напильником.  | 
|||
| 
    18
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:43 
 | 
         
        Короче чтобы в Go у меня уже конвертится и передается в С++ готовый *C.wchar_t
 
        Но хочу этот функционал перенести в С++ часть, выкинув из Golang, чтобы там просто строки в UTF-8 были и все.  | 
|||
| 
    19
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    15:45 
 | 
         
        Ни у кого нет исходников ВК на С++ с ICU внутри?
 
        По типу https://habr.com/ru/post/145187/  | 
|||
| 
    20
    
        H A D G E H O G s    
     27.06.19 
            ✎
    16:05 
 | 
         
        Жил бы на Дельфи, бед бы не знал.     
         | 
|||
| 
    21
    
        Вафель    
     27.06.19 
            ✎
    16:13 
 | 
         
        а что на самом Го нельзя компоненту написать?     
         | 
|||
| 
    22
    
        H A D G E H O G s    
     27.06.19 
            ✎
    16:16 
 | 
         
        (21) Это типа ведроявы наверное, язык от Пабло Глиномесси, для смузевых мальчиков. Что то низкоуровневое - только через jni и C++     
         | 
|||
| 
    23
    
        Вафель    
     27.06.19 
            ✎
    16:18 
 | 
         
        (22) ну тс же на го пишет, а с++ как переходник     
         | 
|||
| 
    24
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:19 
 | 
         
        (21) Если бы 1С не хотело в ВК классы и С++ то можно было бы, чистый C оно прекрасно эмулирует.     
         | 
|||
| 
    25
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:20 
 | 
         
        (22) Ошибаешься все низкоуровневое есть, вот нет эмуляции классов С++ с их извратами.     
         | 
|||
| 
    26
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:21 
 | 
         
        (23) Угу вынужденно.
 
        Кто покажет исходники ВК для 1С на чистом "С" без "++" будут благодарен в разумных пределах даже.  | 
|||
| 
    27
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:23 
 | 
         
        (26) "Каждый объект компоненты должен наследоваться от абстрактного класса IComponentBase (файл ComponentBase.h входит в комплект поставки) и реализовать все его методы."     
         | 
|||
| 
    28
    
        Вафель    
     27.06.19 
            ✎
    16:25 
 | 
         
        а что получается компонеты можно только на С++ писать? на той же делфе уже нельзя?     
         | 
|||
| 
    29
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:28 
 | 
         
        (28) А вот это интересный вопрос как там это сделано.
 
        Вроде видел NativeAPI на Delphi/Lazarus  | 
|||
| 
    30
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:42 
 | 
         
        (29)+ https://github.com/Zawullon/fpnativeapi/blob/master/componentbase.inc
 
        Я же задолбаюсь это эмулировать...  | 
|||
| 
    31
    
        Вафель    
     27.06.19 
            ✎
    16:43 
 | 
         
        ну а что хорошая задачка для глубокого понимания го. 
        хоть 1 язык может далее джуна выучишь )))  | 
|||
| 
    32
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:50 
 | 
         
        (31) Объясни науй мне знать C++ далее джуна?
 
        Когда я на уровне сеньора и мидла знаю уже несколько других!  | 
|||
| 
    33
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:51 
 | 
         
        (32)+ По C++ у меня кстати знания самые херовые из всех языков, примерно так же только еще питон знаю.     
         | 
|||
| 
    34
    
        Вафель    
     27.06.19 
            ✎
    16:54 
 | 
         
        (31) вроде речь про Го была     
         | 
|||
| 
    35
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:55 
 | 
         
        (34) По Go я уже на уровне близко к мидлу, далеко от джуна     
         | 
|||
| 
    36
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:56 
 | 
         
        На Го я легко сконвертил требуемое и передал в код С++ а тот вернул в 1С и все отобразилось ок.     
         | 
|||
| 
    37
    
        Garykom    
     гуру 
    27.06.19 
            ✎
    16:56 
 | 
         
        Как это сделать в С++ ? Без Го.     
         | 
|||
| 
    38
    
        Garykom    
     гуру 
    28.06.19 
            ✎
    03:40 
 | 
         
        Сделал под Windows через MultiByteToWideChar
 
        
     | 
|||
| 
    39
    
        Garykom    
     гуру 
    28.06.19 
            ✎
    03:49 
 | 
         
        (38)+ Под Linux iconv штатно пашет, что делать с Android и iOS пока хз.     
         | 
|||
| 
    40
    
        Сияющий в темноте    
     28.06.19 
            ✎
    08:47 
 | 
         
        В чем сложность пройти по строке и разобрать вручную?
 
        опять же,не надо будет внешние библиотеки цеплять.если хочется красиво,то пройти два раза-посчитать количество символов-первый раз,потом выделить память и пройти еще раз с записью результата. вот в json через Ascii сложнее,но тоже можно.  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |