문제

비교해야 할 상황이 있습니다. 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();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top