Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++ 프로그램의 mbrtowc() 함수

<시간/>

이 기사에서는 C++ STL에서 std::mbrtowc() 함수의 작동, 구문 및 예제에 대해 논의할 것입니다.

std::mbrtowc()란 무엇입니까?

std::mbrtowc() 함수는 헤더 파일에 정의된 C++ STL의 내장 함수입니다. mbrtowc()는 좁은 멀티바이트 문자열을 와이드 문자로 변환한다는 의미입니다. 이 함수는 좁은 멀티바이트 문자를 넓은 문자 표현으로 변환하는 데 사용됩니다.

구문

size_t mbrtowc( wchar_t* pwc, char* str, size_t n, mbstate_t* ps);

매개변수

함수는 다음 매개변수를 받아들입니다 -

  • 암호 − 출력을 저장할 위치에 대한 포인터입니다.
  • 문자열 − 입력으로 사용되는 문자열입니다.
  • n − 확인할 바이트 수입니다.
  • ps − 멀티바이트 문자열을 해석할 때 상태 개체에 대한 포인터입니다.

반환 값

이 함수 반환 값은 다음 조건에 따라 다릅니다 -

  • 0 - 변환해야 하는 str의 문자가 NULL인 경우 함수는 0을 반환합니다.
  • 1…n - 문자열 *str에서 변환된 멀티바이트 문자의 바이트 수입니다.
  • -2 − 다음 n바이트가 불완전하지만 지금까지는 유효한 멀티바이트 문자일 때 -2를 얻습니다.
  • -1 − 인코딩 오류가 발생하면 -1이 표시되고 *pwc에 아무 것도 기록되지 않습니다.

예시

#include <bits/stdc++.h>
using namespace std;
void print_(const char* ch){
   mbstate_t temp = mbstate_t();
   int cal = strlen(ch);
   const char* i = ch + cal;
   int total;
   wchar_t con;
   while ((total = mbrtowc(&con, ch, i - ch, &temp)) > 0){
      wcout << "Next " << total <<" bytes are the character " << con << '\n';
      ch += total;
   }
}
int main(){
   setlocale(LC_ALL, "en_US.utf8");
   const char* len = u8"z\u00df\u6c34";
   print_(len);
}

출력

Next 1 bytes are the character z
Next 2 bytes are the character ß
Next 3 bytes are the character 水

예시

#include <bits/stdc++.h>
using namespace std;
void print_(const char* ch){
   mbstate_t temp = mbstate_t();
   int cal = strlen(ch);
   const char* i = ch + cal;
   int total;
   wchar_t con;
   while ((total = mbrtowc(&con, ch, i - ch, &temp)) > 0){
      wcout << "Next " << total <<" bytes are the character " << con << '\n';
      ch += total;
   }
}
int main(){
   setlocale(LC_ALL, "en_US.utf8");
   const char* len = u8"\xE2\x88\x83y\xE2\x88\x80x\xC2";
   print_(len);
}

출력

Next 3 bytes are the character ∃
Next 1 bytes are the character y
Next 3 bytes are the character ∀
Next 1 bytes are the character x