C++ Chapter 17.1 : std::string & std::wstring

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 17. std::string 문자열 클래스

std::string & std::wstring

basic_string 이라는 클래스의 서로 다른 instantiation 이다. (템플릿 클래스)

image

std::string

  • std::string 👉 C스타일 string 이 불편하기 때문에 사용하게 됨
  • std::string은 basic_string 클래스의 char 타입으로 들어간 형태

std::wstring

  • std::wstring은 basic_string 클래스의 wchar_t 타입으로 들어간 형태
    • wchar_t
      • unsigned short 타입을 wchar_t 라고 정의해놓은 것.
      • 1byte인 char 보다 데이터 크기가 크다.
      • 유니코드, 긴 문자열, 국제어 등등에 쓰임.
      • L“문자열” → 앞에 L을 붙인다
    • std::wcout
      • wchar_t 를 출력 하는 cout 이라고 생각하면 됨.
      • strlen() → wcslen()
      • strcat → wcscat()
      • cout → wcout
      • cin→ wcin
    • std::locale::global(std::locale(""))
      • 전체 로케일 설정. “” 빈칸으로 두면 현재 시스템의 로케일로 자동 설정된다.
      • std::locale::global(std::locale("kor")) → 전체 로케일의 설정을 Korean으로.
    • wcout.imbue(std::locale());
      • 전역 로케일 설정. “” 빈칸으로 두면 현재 시스템의 로케일로 자동 설정된다.
      • wcout.imbue(std::locale("kor")); → 전역 로케일의 설정을 Korean으로
#include <iostream>
#include <string>
#include <cstddef>
#include <locale>

using namespace std;

int main()
{
	/* C-style string exemple */
	{
		char* strHello = new char[7];
		strcpy_s(strHello, sizeof(char) * 7, "hello!");
		cout << strHello << "\n";
	}	 

	/* basic_string<> - string, wstring */
	{
		// basic_string이라는 클래스의 템플릿의 서로 다른 인스턴시에이션
		string str;
		wstring wstr;

		// wchar_t = unsigned short
		// 긴 문자열 또는 국제어 unicode를 위해 사용한다.
		wchar_t wc;

		const std::wstring texts[] =
		{
			 L"안녕하세요", //Korean
			 L"Ñá", //Spanish
			 L"forêt intérêt", //French
			 L"Gesäß", //German
			 L"取消波蘇日奇諾", //Chinese
			 L"日本人のビット", //Japanese
			 L"немного русский", //Russian
			 L"ένα κομμάτι της ελληνικής", // Greek
			 L"ਯੂਨਾਨੀ ਦੀ ਇੱਕ ਬਿੱਟ", // Punjabi (wtf?). xD
			 L"کمی از ایران ", // Persian (I know it, from 300 movie)
			 L"కానీ ఈ ఏమి నరకం ఉంది?", //Telugu (telu-what?)
			 L"Но какво, по дяволите, е това?" //Bulgarian
		};

		cout << "여러 나라 문자들 \n";
		
		std::locale::global(std::locale("")); // 시스템이 사용하는 locale로 지정 
		wcout.imbue(std::locale());

		for (size_t i = 0; i < texts->size(); ++i)
			wcout << texts[i] << endl;
	}
}


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

댓글남기기