ctype 클래스
문자를 분류하고, 대문자에서 소문자로 변환하고, 네이티브 문자 집합과 로캘에서 사용하는 문자 집합 사이에서 변환하는 데 사용하는 패싯을 제공하는 클래스입니다.
구문
template <class CharType>
class ctype : public ctype_base;
매개 변수
CharType
문자를 인코딩하기 위해 프로그램 내 사용하는 형식
설명
모든 로캘 패싯과 마찬가지로, 고정 개체 ID에는 초기값 0이 저장되어 있습니다. 저장된 값에 액세스를 처음 시도하면 id
에 고유한 양수 값이 저장됩니다. 분류 기준에는 기본 클래스 ctype_base에 중첩된 비트 마스크 형식이 있습니다.
C++ 표준 라이브러리는 이 클래스 템플릿의 두 가지 명시적 특수화를 정의합니다.
ctype<char>
- 차이점을 별도로 설명하는 명시적 특수화입니다. 자세한 내용은 클래스를 참조ctype<char>
하세요.ctype<wchar_t>
는 요소를 와이드 문자로 처리합니다.
클래스 템플릿 ctype<CharType>
의 기타 전문화:
CharType 형식의 값 ch를 식
(char)ch
이 있는 형식char
값으로 변환합니다.형식
char
의 값 바이트를 식CharType(byte)
이 있는 CharType 형식의 값으로 변환합니다.
다른 모든 작업은 명시적 특수화와 동일한 방식으로 값에 대해 수행 char
됩니다 ctype<char>
.
생성자
생성자 | Description |
---|---|
ctype | 문자의 로캘 패싯으로 사용할 수 있는 ctype 클래스의 개체에 대한 생성자입니다. |
Typedef
형식 이름 | 설명 |
---|---|
char_type | 로캘에서 사용하는 문자를 설명하는 형식 |
멤버 함수
멤버 함수 | 설명 |
---|---|
do_is | 단일 문자에 특정 특성이 있는지 여부를 테스트하거나 범위에 있는 각 문자의 특성을 분류하고 배열에 저장하기 위해 호출하는 가상 함수입니다. |
do_narrow | 로캘에서 사용하는 CharType 형식의 문자를 네이티브 문자 집합의 char 형식의 해당 문자로 변환하기 위해 호출하는 가상 함수입니다. |
do_scan_is | 범위에서 지정된 마스크와 일치하는 첫 번째 문자를 찾기 위해 호출하는 가상 함수입니다. |
do_scan_not | 범위에서 지정된 마스크와 일치하지 않는 첫 번째 문자를 찾기 위해 호출하는 가상 함수입니다. |
do_tolower | 문자 또는 문자 범위를 소문자로 변환하기 위해 호출하는 함수입니다. |
do_toupper | 문자 또는 문자 범위를 대문자로 변환하기 위해 호출하는 함수입니다. |
do_widen | 네이티브 문자 집합의 char 형식의 문자를 로캘에서 사용하는 CharType 형식의 문자로 변환하기 위해 호출하는 가상 함수입니다. |
is | 단일 문자에 특정 특성이 있는지 여부를 테스트하거나 범위에 있는 각 문자의 특성을 분류하고 배열에 저장합니다. |
narrow | 로캘에서 사용하는 CharType 형식의 문자를 네이티브 문자 집합의 형식 문자의 해당 문자로 변환합니다. |
scan_is | 범위에서 지정된 마스크와 일치하는 첫 번째 문자를 찾습니다. |
scan_not | 범위에서 지정된 마스크와 일치하지 않는 첫 번째 문자를 찾습니다. |
tolower | 문자 또는 문자 범위를 소문자로 변환합니다. |
toupper | 문자 또는 문자 범위를 대문자로 변환합니다. |
widen | 네이티브 문자 집합의 char 형식의 문자를 로캘에서 사용하는 CharType 형식의 해당 문자로 변환합니다. |
요구 사항
헤더:<로캘>
네임스페이스: std
ctype::char_type
로캘에서 사용하는 문자를 설명하는 형식
typedef CharType char_type;
설명
이 형식은 템플릿 매개 변수 CharType과 동일한 의미입니다.
예시
char_type
을 반환 값으로 사용하는 예제는 멤버 함수 widen을 참조하세요.
ctype::ctype
문자의 로캘 패싯으로 사용할 수 있는 ctype 클래스의 개체에 대한 생성자입니다.
explicit ctype(size_t _Refs = 0);
매개 변수
_심판
개체에 대한 메모리 관리의 유형을 지정하는 데 사용하는 정수 값입니다.
설명
_Refs 매개 변수 및 해당 중요도에 사용할 수 있는 값은 다음과 같습니다.
0: 개체를 포함하는 로캘에 의해 개체의 수명이 관리됩니다.
1: 개체의 수명을 수동으로 관리해야 합니다.
> 1: 이러한 값은 정의되지 않습니다.
소멸자는 보호되므로 직접적인 예제는 확인할 수 없습니다.
생성자는 locale::facet( _Refs
)를 통해 해당 locale::facet
기본 개체를 초기화합니다.
ctype::d o_is
단일 문자에 특정 특성이 있는지 여부를 테스트하거나 범위에 있는 각 문자의 특성을 분류하고 배열에 저장하기 위해 호출하는 가상 함수입니다.
virtual bool do_is(
mask maskVal,
CharType ch) const;
virtual const CharType *do_is(
const CharType* first,
const CharType* last,
mask* dest) const;
매개 변수
maskVal
문자를 테스트할 마스크 값입니다.
ch
특성을 테스트할 문자입니다.
first
특성을 분류할 범위 내 첫 번째 문자에 대한 포인터입니다.
last
특성을 분류할 범위 내 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
dest
각 문자의 특성에 대한 특징을 지정하는 마스크 값을 저장할 배열의 시작 부분에 대한 포인터입니다.
Return Value
첫 번째 멤버 함수는 테스트된 문자에 마스크 값 true
으로 설명된 특성이 있는 경우( 특성이 없는 경우) false
인 부울 값을 반환합니다.
두 번째 멤버 함수는 범위 내 각 문자의 특성에 대한 특징을 지정하는 마스크 값을 포함하는 배열을 반환합니다.
설명
문자의 특성을 분류하는 마스크 값은 ctype이 파생되는 ctype_base 클래스에서 제공합니다. 첫 번째 멤버 함수는 비트 마스크라고 하는 첫 번째 매개 변수에 대한 식을 수락하고 비트 연산자(|
, , &
,^
~
)에 의해 마스크 값의 조합으로 구성됩니다.
예시
do_is
를 호출하는 is에 대한 예제를 참조하세요.
ctype::d o_narrow
로캘에서 사용하는 CharType
형식의 문자를 네이티브 문자 집합의 char
형식의 해당 문자로 변환하기 위해 호출하는 가상 함수입니다.
virtual char do_narrow(
CharType ch,
char default = '\0') const;
virtual const CharType* do_narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
매개 변수
ch
로캘에서 변환하는 데 사용하는 Chartype
형식의 문자입니다.
default
멤버 함수에서 char
형식에 해당하는 문자가 없는 CharType
형식의 문자에 할당할 기본값입니다.
first
변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
dest
변환한 문자 범위를 저장하는 대상 범위 내 char
형식의 첫 번째 문자에 대한 const 포인터입니다.
Return Value
첫 번째 보호된 멤버 함수는 형식의 매개 변수 문자에 해당하는 문자 형식의 네이티브 문자를 반환하거나 해당 문자 CharType
가 정의되지 않은 경우 기본값을 반환합니다.
두 번째 보호된 멤버 함수는 CharType
형식의 문자에서 변환된 네이티브 문자의 대상 범위에 대한 포인터를 반환합니다.
설명
두 번째 보호된 멤버 템플릿 함수는 간격 [0, )에 대한 [] 값do_narrow
( first
[ I
]default
, last
- first
)에 저장dest
됩니다. I
I
예시
do_narrow
를 호출하는 narrow에 대한 예제를 참조하세요.
ctype::d o_scan_is
범위에서 지정된 마스크와 일치하는 첫 번째 문자를 찾기 위해 호출하는 가상 함수입니다.
virtual const CharType *do_scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
매개 변수
maskVal
문자로 일치할 마스크 값입니다.
first
검색할 범위의 첫 번째 문자에 대한 포인터입니다.
last
검색할 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
지정된 마스크와 일치하는 범위의 첫 번째 문자에 대한 포인터입니다. 이러한 값이 없으면 함수가 마지막으로 반환됩니다.
설명
보호된 멤버 함수는 do_is( maskVal
, * ptr
)가 true인 [first
, last
) 범위의 가장 작은 포인터 ptr
을 반환합니다.
예시
do_scan_is
를 호출하는 scan_is에 대한 예제를 참조하세요.
ctype::d o_scan_not
범위에서 지정된 마스크와 일치하지 않는 첫 번째 문자를 찾기 위해 호출하는 가상 함수입니다.
virtual const CharType *do_scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
매개 변수
maskVal
문자로 일치하지 않을 마스크 값입니다.
first
검색할 범위의 첫 번째 문자에 대한 포인터입니다.
last
검색할 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
지정된 마스크와 일치하지 않은 범위의 첫 번째 문자에 대한 포인터입니다. 이러한 값이 없으면 함수가 마지막으로 반환됩니다.
설명
보호된 멤버 함수는 do_is( maskVal
, * ptr
)가 false인 [first
, last
) 범위의 가장 작은 포인터 ptr
을 반환합니다.
예시
do_scan_not
을 호출하는 scan_not에 대한 예제를 참조하세요.
ctype::d o_tolower
문자 또는 문자 범위를 소문자로 변환하기 위해 호출하는 가상 함수입니다.
virtual CharType do_tolower(CharType ch) const;
virtual const CharType *do_tolower(
CharType* first,
const CharType* last) const;
매개 변수
ch
소문자로 변환할 문자입니다.
first
대/소문자를 변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
대/소문자를 변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
첫 번째 보호된 멤버 함수는 매개 변수 ch의 소문자 형식을 반환합니다. 소문자 양식이 없으면 ch를 반환합니다. 보호된 두 번째 멤버 함수는 마지막으로 반환됩니다.
설명
두 번째 보호된 멤버 템플릿 함수는 간격 [0, - last
first
I
), with do_tolower
( first
[ I
])에서 각 요소 first
[I
]를 대체합니다.
예시
do_tolower
를 호출하는 tolower에 대한 예제를 참조하세요.
ctype::d o_toupper
문자 또는 문자 범위를 대문자로 변환하기 위해 호출하는 함수입니다.
virtual CharType do_toupper(CharType ch) const;
virtual const CharType *do_toupper(
CharType* first,
const CharType* last) const;
매개 변수
ch
대문자로 변환할 문자입니다.
first
대/소문자를 변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
대/소문자를 변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
보호된 첫 번째 멤버 함수는 매개 변수 ch의 대문자 형식을 반환합니다. 대문자 양식이 없으면 ch를 반환합니다. 보호된 두 번째 멤버 함수는 마지막으로 반환됩니다.
설명
두 번째 보호된 멤버 템플릿 함수는 간격 [0, - last
first
I
), with do_toupper
( first
[ I
])에서 각 요소 first
[I
]를 대체합니다.
예시
do_toupper
를 호출하는 toupper에 대한 예제를 참조하세요.
ctype::d o_widen
네이티브 문자 집합의 char
형식의 문자를 로캘에서 사용하는 CharType
형식의 문자로 변환하기 위해 호출하는 가상 함수입니다.
virtual CharType do_widen(char byte) const;
virtual const char *do_widen(
const char* first,
const char* last,
CharType* dest) const;
매개 변수
바이트
변환할 네이티브 문자 집합 내 char
형식의 문자입니다.
first
변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
dest
변환한 문자 범위를 저장하는 대상 범위 내 CharType
형식의 첫 번째 문자에 대한 포인터입니다.
Return Value
첫 번째 보호된 멤버 함수는 네이티브 char
형식의 매개 변수 문자에 해당하는 CharType
형식의 문자를 반환합니다.
두 번째 보호된 멤버 함수는 char
형식의 네이티브 문자에서 변환된 로캘에서 사용하는 CharType
형식 문자의 대상 범위에 대한 포인터를 반환합니다.
설명
두 번째 보호된 멤버 템플릿 함수는 [0, last
- first
) 간격의 I
에 대해 do_widen
( first
[ I
]) 값을 dest
[ I
]에 저장합니다.
예시
do_widen
을 호출하는 widen에 대한 예제를 참조하세요.
ctype::is
단일 문자에 특정 특성이 있는지 여부를 테스트하거나 범위에 있는 각 문자의 특성을 분류하고 배열에 저장합니다.
bool is(mask maskVal, CharType ch) const;
const CharType *is(
const CharType* first,
const CharType* last,
mask* dest) const;
매개 변수
maskVal
문자를 테스트할 마스크 값입니다.
ch
특성을 테스트할 문자입니다.
first
특성을 분류할 범위 내 첫 번째 문자에 대한 포인터입니다.
last
특성을 분류할 범위 내 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
dest
각 문자의 특성에 대한 특징을 지정하는 마스크 값을 저장할 배열의 시작 부분에 대한 포인터입니다.
Return Value
첫 번째 멤버 함수는 테스트한 문자가 마스크 값에서 설명한 특성을 포함하는 경우 true
를 반환하며 특성을 포함하지 못하는 경우 false
를 반환합니다.
두 번째 멤버 함수는 특성을 분류할 범위의 마지막 문자에 대한 포인터를 반환합니다.
설명
문자의 특성을 분류하는 마스크 값은 ctype이 파생되는 ctype_base 클래스에서 제공합니다. 첫 번째 멤버 함수는 비트 마스크라고 하는 첫 번째 매개 변수에 대한 식을 수락하고 비트 연산자(|
, , &
,^
~
)에 의해 마스크 값의 조합으로 구성됩니다.
예시
// ctype_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main() {
locale loc1 ( "German_Germany" ), loc2 ( "English_Australia" );
if (use_facet<ctype<char> > ( loc1 ).is( ctype_base::alpha, 'a' ))
cout << "The character 'a' in locale loc1 is alphabetic."
<< endl;
else
cout << "The character 'a' in locale loc1 is not alphabetic."
<< endl;
if (use_facet<ctype<char> > ( loc2 ).is( ctype_base::alpha, '!' ))
cout << "The character '!' in locale loc2 is alphabetic."
<< endl;
else
cout << "The character '!' in locale loc2 is not alphabetic."
<< endl;
char *string = "Hello, my name is John!";
ctype<char>::mask maskarray[30];
use_facet<ctype<char> > ( loc2 ).is(
string, string + strlen(string), maskarray );
for (unsigned int i = 0; i < strlen(string); i++) {
cout << string[i] << ": "
<< (maskarray[i] & ctype_base::alpha "alpha"
: "not alpha")
<< endl;;
};
}
ctype::narrow
로캘에서 사용하는 CharType
형식의 문자를 네이티브 문자 집합 내 char
형식의 해당 문자로 변환합니다.
char narrow(CharType ch, char default = '\0') const;
const CharType* narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
매개 변수
ch
로캘에서 변환하는 데 사용하는 Chartype
형식의 문자입니다.
default
멤버 함수에서 char
형식에 해당하는 문자가 없는 CharType
형식의 문자에 할당할 기본값입니다.
first
변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
dest
변환한 문자 범위를 저장하는 대상 범위 내 char
형식의 첫 번째 문자에 대한 const 포인터입니다.
Return Value
첫 번째 멤버 함수는 정의된 해당 문자가 없는 경우 CharType default
형식의 매개 변수 문자에 해당하는 char
형식의 네이티브 문자를 반환합니다.
두 번째 멤버 함수는 CharType
형식의 문자에서 변환된 네이티브 문자의 대상 범위에 대한 포인터를 반환합니다.
설명
첫 번째 멤버 함수는 do_narrow(ch
, default
)를 반환합니다. 두 번째 멤버 함수는 do_narrow(, , last
,dest
default
)를 반환first
합니다. 기본 소스 문자만 narrow
아래에 고유 역 이미지 CharType
을 포함하는 것이 보장됩니다. 이러한 기본 소스 문자의 경우 narrow
( widen ( c ), 0 ) == c와 같이 고정 값을 유지합니다.
예시
// ctype_narrow.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "english" );
wchar_t *str1 = L"\x0392fhello everyone";
char str2 [16];
bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).narrow
( str1, str1 + wcslen(str1), 'X', &str2[0] ) != 0); // C4996
str2[wcslen(str1)] = '\0';
wcout << str1 << endl;
cout << &str2[0] << endl;
}
Xhello everyone
ctype::scan_is
범위에서 지정된 마스크와 일치하는 첫 번째 문자를 찾습니다.
const CharType *scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
매개 변수
maskVal
문자로 일치할 마스크 값입니다.
first
검색할 범위의 첫 번째 문자에 대한 포인터입니다.
last
검색할 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
지정된 마스크와 일치하는 범위의 첫 번째 문자에 대한 포인터입니다. 이러한 값이 없으면 함수가 마지막으로 반환됩니다.
설명
멤버 함수는 do_scan_is(maskVal
, first
, last
)를 반환합니다.
예시
// ctype_scan_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char *string = "Hello, my name is John!";
const char* i = use_facet<ctype<char> > ( loc1 ).scan_is
( ctype_base::punct, string, string + strlen(string) );
cout << "The first punctuation is \"" << *i << "\" at position: "
<< i - string << endl;
}
The first punctuation is "," at position: 5
ctype::scan_not
범위에서 지정된 마스크와 일치하지 않는 첫 번째 문자를 찾습니다.
const CharType *scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
매개 변수
maskVal
문자로 일치하지 않을 마스크 값입니다.
first
검색할 범위의 첫 번째 문자에 대한 포인터입니다.
last
검색할 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
지정된 마스크와 일치하지 않은 범위의 첫 번째 문자에 대한 포인터입니다. 이러한 값이 없으면 함수가 마지막으로 반환됩니다.
설명
멤버 함수는 do_scan_not(maskVal
, first
, last
)를 반환합니다.
예시
// ctype_scan_not.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char *string = "Hello, my name is John!";
const char* i = use_facet<ctype<char> > ( loc1 ).scan_not
( ctype_base::alpha, string, string + strlen(string) );
cout << "First nonalpha character is \"" << *i << "\" at position: "
<< i - string << endl;
}
First nonalpha character is "," at position: 5
ctype::tolower
문자 또는 문자 범위를 소문자로 변환합니다.
CharType tolower(CharType ch) const;
const CharType *tolower(CharType* first, const CharType* last) const;
매개 변수
ch
소문자로 변환할 문자입니다.
first
대/소문자를 변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
대/소문자를 변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
첫 번째 멤버 함수는 매개 변수 ch의 소문자 형식을 반환합니다. 소문자 양식이 없으면 ch를 반환합니다.
두 번째 멤버 함수는 마지막을 반환합니다.
설명
첫 번째 멤버 함수는 do_tolower()를ch
반환합니다. 두 번째 멤버 함수는 do_tolower(first
, last
)를 반환합니다.
예시
// ctype_tolower.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char string[] = "HELLO, MY NAME IS JOHN";
use_facet<ctype<char> > ( loc1 ).tolower
( string, string + strlen(string) );
cout << "The lowercase string is: " << string << endl;
}
The lowercase string is: hello, my name is john
ctype::toupper
문자 또는 문자 범위를 대문자로 변환합니다.
CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;
매개 변수
ch
대문자로 변환할 문자입니다.
first
대/소문자를 변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
대/소문자를 변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
Return Value
첫 번째 멤버 함수는 매개 변수 ch의 대문자 형식을 반환합니다. 대문자 양식이 없으면 ch를 반환합니다.
두 번째 멤버 함수는 마지막을 반환합니다.
설명
첫 번째 멤버 함수는 do_toupper()를ch
반환합니다. 두 번째 멤버 함수는 do_toupper( first
, last
)를 반환합니다.
예시
// ctype_toupper.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char string[] = "Hello, my name is John";
use_facet<ctype<char> > ( loc1 ).toupper
( string, string + strlen(string) );
cout << "The uppercase string is: " << string << endl;
}
The uppercase string is: HELLO, MY NAME IS JOHN
ctype::widen
네이티브 문자 집합의 char
형식의 문자를 로캘에서 사용하는 CharType
형식의 해당 문자로 변환합니다.
CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;
매개 변수
바이트
변환할 네이티브 문자 집합 내 char 형식의 문자입니다.
first
변환할 문자 범위의 첫 번째 문자에 대한 포인터입니다.
last
변환할 문자 범위의 마지막 문자 바로 다음에 있는 문자에 대한 포인터입니다.
dest
변환한 문자 범위를 저장하는 대상 범위 내 CharType
형식의 첫 번째 문자에 대한 포인터입니다.
Return Value
첫 번째 멤버 함수는 네이티브 char
형식의 매개 변수 문자에 해당하는 CharType
형식의 문자를 반환합니다.
두 번째 멤버 함수는 char
형식의 네이티브 문자에서 변환된 로캘에서 사용하는 CharType
형식 문자의 대상 범위에 대한 포인터를 반환합니다.
설명
첫 번째 멤버 함수는 do_widen()를byte
반환합니다. 두 번째 멤버 함수는 do_widen(first
, last
, dest
)를 반환합니다.
예시
// ctype_widen.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "English" );
char *str1 = "Hello everyone!";
wchar_t str2 [16];
bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).widen
( str1, str1 + strlen(str1), &str2[0] ) != 0); // C4996
str2[strlen(str1)] = '\0';
cout << str1 << endl;
wcout << &str2[0] << endl;
ctype<wchar_t>::char_type charT;
charT = use_facet<ctype<char> > ( loc1 ).widen( 'a' );
}
Hello everyone!
Hello everyone!