Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
qppq
11 / 11 / 1
Регистрация: 31.08.2016
Сообщений: 154
Завершенные тесты: 1
#1

конвертировать UnicodeString в char* - C++

16.09.2016, 10:49. Просмотров 187. Ответов 4
Метки нет (Все метки)

получилось вот так
C++
1
char* aa = (char*)(Edit1->Text).c_str();
какие есть еще варианты? спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2016, 10:49     конвертировать UnicodeString в char*
Посмотрите здесь:

Cannot convert 'UnicodeString' to 'const char *' - C++
При написании программы столкнулся с проблемой. На этих строчках: char sFInName=STR_FILE_IN_NAME, sFOutName=STR_FILE_OUT_NAME,...

UnicodeString to Array of char c++ builder - C++
Подскажите пожалуйста, каким образом можно посимвольно записать AnsiString в Array char. Можно так же вариант и из файла. Если не...

Cannot convert 'UnicodeString' to 'const char *' - C++
делаю локальную сеть, столкнулся с проблемой: addr.sin_addr.s_addr=inet_addr("192.168.0.3"); как сделать чтобы ip мог задать...

C++ конвертировать char* в time_t - C++
Всем привет. Помогите, пожалуйста разобраться, как нормально конвертировать char* (время полученное с сервера) в time_t. Нашел вариант для...

Конвертировать float в *char??? - C++
Как преобразовать float в *char?

Конвертировать массив char в UrlEncode - C++
Помогите конвертировать массив char в UrlEncode. Начал учить c++ не давно, и вот сразу получил такое задание. Функцию конвертирования не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
16.09.2016, 11:00     конвертировать UnicodeString в char* #2
И где тут конвертация?
Selot
172 / 108 / 28
Регистрация: 19.01.2010
Сообщений: 426
Завершенные тесты: 1
16.09.2016, 11:16     конвертировать UnicodeString в char* #3
C++
1
2
3
4
5
6
#inсlude<string>
...
std::wstring w_str(Edit1->Text.c_str()); // c_str() возвращает wchar*
std::string str(w_str.begin(), w_Str.end());
const char* ch = str.c_str();  // c_str() возвращает const char* 
...
hoggy
6437 / 2655 / 460
Регистрация: 15.11.2014
Сообщений: 5,846
Завершенные тесты: 1
17.09.2016, 11:52     конвертировать UnicodeString в char* #4
Цитата Сообщение от Selot Посмотреть сообщение
std::string str(w_str.begin(), w_Str.end());
это - плохая идея.

qppq,

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// ============================================================================
// ============================================================================
 
    /* преобразования строк в разные кодировки */
 
#ifndef _STRING_
    #error #include <string> first
#endif
 
// --- conv.h
namespace conv{
 
    namespace multibyte {
        std::string  convert(const wchar_t* s);
        std::wstring convert(const char*    s);
        std::string  convert(const std::wstring& s);
        std::wstring convert(const std::string&  s);
    }// namespace multibyte 
 
    namespace utf8 {
        std::string  convert(const std::wstring& s);
        std::wstring convert(const std::string&  s);
    }// namespace utf8 
 
    namespace stdlocal {
 
        std::string convert(
            const wchar_t* s,
            const size_t len,
            const std::locale& loc = std::locale(),
            const char default_char = '?'
        );
 
        std::string convert(
            const wchar_t* s, 
            const std::locale& loc = std::locale(""), 
            const char default_char = '?'
        );
        std::string convert(
            const std::wstring& s, 
            const std::locale& loc = std::locale(""), 
            const char default_char = '?'
        );
 
        std::wstring convert(
            const char* s,
            const std::locale& loc = std::locale("")
        );
        std::wstring convert(
            const std::string& s, 
            const std::locale& loc = std::locale("") 
        );
 
        std::wstring convert(
            const char* s, 
            const size_t len, 
            const std::locale& loc = std::locale()
        );
 
    } //namespace stdlocal 
 
}//namespace conv
 
 
// --- conv.cpp
 
#ifndef _STRING_
    #error #include <string> first
#endif
 
#ifndef _LOCALE_
    #error #include <locale> first
#endif
 
#ifndef _CODECVT_
    #error #include <codecvt> first
#endif
 
namespace conv{
 
    namespace multibyte {
 
        std::string convert(const std::wstring& s)
            { return convert( s.c_str() ); }
        std::wstring convert(const std::string& s)
            { return convert(s.c_str()); }
 
        std::string convert(const wchar_t* s)
        { 
            const size_t len = wcslen(s);
            std::string result(len,'\0');
 
            #ifdef _MSC_VER
                size_t count = 0;
                const auto size_ = result.size();
                wcstombs_s(&count, &result[0], size_, s, size_ );
            #else
                std::mbstate_t state = std::mbstate_t();
                std::wcsrtombs( &result[0], &s, result.size(), &state);
            #endif
 
            return result;
        }
 
        std::wstring convert(const char* s)
        { 
            std::mbstate_t state = std::mbstate_t(); 
        
            size_t len;
            wchar_t wc[4] = {};
            std::wstring result;
            const char* end = s + std::strlen(s);
            while ((len = std::mbrtowc(wc, s, end - s, &state)) > 0)
            {
                result += wc; s += len;
                for (auto& ch: wc)  ch = L'\0';
            }
            return result;
        }
 
    }//namespace multibyte
 
    namespace utf8 {
        
        std::string  convert(const std::wstring& s)
        { 
            typedef std::codecvt_utf8<wchar_t>
                convert_typeX;
            std::wstring_convert<convert_typeX,wchar_t>
                converterX;
            return converterX.to_bytes(s);
        }
        std::wstring convert(const std::string&  s)
        { 
            typedef std::codecvt_utf8<wchar_t>
                convert_typeX;
            std::wstring_convert<convert_typeX,wchar_t>
                converterX;
            return converterX.from_bytes(s);
        }
            
    }//namespace utf8 
 
    namespace stdlocal {
 
        std::wstring convert(const char* first, const size_t len, const std::locale& loc)
        {
            if(len == 0)
                return std::wstring();
            const std::ctype<wchar_t>& facet =
                std::use_facet< std::ctype<wchar_t> >(loc);
            const char* last = first + len;
            std::wstring result(len, L'\0');
            facet.widen(first, last, &result[0]);
            return result;
        }
 
        std::string convert(
            const wchar_t* first,
            const size_t len,
            const std::locale& loc,
            const char default_char
        )
        {
            if(len == 0)
                return std::string();
            const std::ctype<wchar_t>& facet =
                std::use_facet<std::ctype<wchar_t> >(loc);
            const wchar_t* last  = first + len;
            std::string result( len, default_char );
            facet.narrow( first, last, default_char, &result[0] );
            return result;
        }
 
        std::string  convert( const wchar_t* s, const std::locale& loc, const char default_char )
            { return convert(s, std::wcslen(s), loc, default_char); }
        std::string  convert(const std::wstring& s, const std::locale& loc, const char default_char)
            { return convert(s.c_str(), s.length(), loc, default_char);  }
        std::wstring convert( const char* s, const std::locale& loc)
            { return convert(s, std::strlen(s), loc); }
        std::wstring convert( const std::string& s, const std::locale& loc)
            { return convert(s.c_str(), s.length(), loc); }
 
    }//namespace stdlocal
}//namespace conv
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2016, 11:59     конвертировать UnicodeString в char*
Еще ссылки по теме:

char to int не могу не как конвертировать - C++
читаю из файла в массив char'ов соответственно есь массив из четырех элементов в каторых записан один int, вот как это кампу объяснить ...

Как int конвертировать в string или char? - C++
например как сделать это: int x=5; string y=&quot;Hello&quot;+x;

Cannot convert 'UnicodeString' to 'String' - C++
Подскажите как конвертировать такие форматы, компилятор если что RAT Studio 2010 нашел тут вариант...

Массив char в переменную char - C++
Допустим, имеется заполненный массив char Massiv, и есть переменная char buff. Как массив передать в переменную?

Преобразование char[256] в char* - C++
Как преобразовать char в char*?

Разница между new char[] и new char[]() - C++
Доброго времени суток. Подскажите пожалуйста разницу, между следующим кодом: char* ch = new char; и char* ch = new...


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

Или воспользуйтесь поиском по форуму:
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,452
Записей в блоге: 17
17.09.2016, 11:59     конвертировать UnicodeString в char* #5
Цитата Сообщение от qppq Посмотреть сообщение
C++
1
char* aa = (char*)(Edit1->Text).c_str();
Делать так нельзя.

Цитата Сообщение от qppq Посмотреть сообщение
какие есть еще варианты? спасибо
Есть вариант, подумать головой, и задаться вопросом зачем оно нужно вообще?

Можно так
C++
1
2
AnsiString  a = Edit1->Text;
// Использовать   a.c_str()
Но о пять же от контекста.


P.S.: Вообще тема должна быть в разделе C++Builder
Yandex
Объявления
17.09.2016, 11:59     конвертировать UnicodeString в char*
Ответ Создать тему
Опции темы

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