C++ Chapter 17.1 : std::string & std::wstring
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!
chapter 17. std::string 문자열 클래스
std::string & std::wstring
basic_string 이라는 클래스의 서로 다른 instantiation 이다. (템플릿 클래스)
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;
}
}
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글남기기