시스템 :: wideString은 char*로 어떻게 변환합니까?
-
20-09-2019 - |
문제
비교해야 할 상황이 있습니다. char*
a WideString
.
C ++의 widestring을 char*로 어떻게 변환합니까?
해결책
wcstombs 함수를 사용할 수 있습니다.
size_t wcstombs (char * mbstr, const wchar_t * wcstr, size_t max);
다른 팁
불가능합니다. 실제로, 당신은 두 가지 다른 개념을 혼합했습니다.
- Widestring은 UTF-16 인코딩에서 버퍼를 의미합니다.
- char*는 UTF-8에서 Ascii-only 텍스트에 이르기까지 모든 것을 포함 할 수 있습니다 (이 경우 Widestring에 ASCII가 아닌 문자가 포함되지 않은 경우에만 변환 할 수 있음).
내 답변을 참조하십시오 https://stackoverflow.com/questions/1049947/should-utf-16-be-conidered-harmful 텍스트를 올바르게 처리하는 방법에 대해.
에게 비교하다 ㅏ System::WideString
a char*
(질문으로 신체 당신이하고 싶다고 말하면), 당신은 새로운 것을 만들 수 있습니다 WideString
포인터에서 객체를 한 다음 평범한 것을 사용하십시오 ==
운영자. 클래스에는 하나를 포함한 여러 생성자가 있습니다 const char*
.
char* foo = ...;
WideString bar = ...;
if (WideString(foo) == bar)
std::cout << "They're equal!\n";
사실, WideString
객체는 왼쪽에 있으며 포인터가 자동으로 변환되므로 생성자 호출조차 필요하지 않습니다.
if (bar == foo) { ... }
에게 전환하다 ㅏ WideString
a char*
(질문으로 제목 당신이하고 싶다고 말하면), 당신은 AnsiString
유형. 그들은 서로 전환 할 수 있습니다. 평범한 포인터를 얻으려면 전화하십시오 c_str
방법, 당신과 마찬가지로 std::string
.
WideString bar = ...;
AnsiString foo = bar;
std::cout << foo.c_str();
제휴하지 않습니다 StackOverflow