C++のワイド文字とライブラリ関数
このセクションでは、C++のワイド文字とは何かを説明します。ワイド文字を処理するために使用されるいくつかの関数も表示されます。
ワイド文字は文字データ型に似ています。主な違いは、thatcharは1バイトのスペースを使用しますが、ワイド文字はメモリ内に2バイト(コンパイラによっては4バイト)のスペースを使用することです。 2バイトのスペース幅の文字の場合、64K(65536)個の異なる文字を保持できます。したがって、ワイド文字はUNICODE文字を保持できます。 UNICODE値は国際標準であり、事実上、あらゆる言語のあらゆる文字の文字をエンコードできます。
例
#include<iostream> using namespace std; int main() { wchar_t wide_character = L'a'; cout << "The wide character is: " << wide_character << endl; cout << "Wide character size: " <<sizeof(wide_character); }
出力
The wide character is: 97 Wide character size: 2
ワイド文字を作成するには、文字の前に「L」を追加する必要があることがわかります。ただし、coutを使用した出力には文字値は表示されません。したがって、char全体を使用するには、wcoutを使用する必要があり、入力を取得するには、wcinを使用する必要があります。
ワイド文字配列を作成し、それらを文字列として出力できます。
例
#include<iostream> using namespace std; int main() { char str1[] = "This is character array"; cout << str1 << endl; wchar_t str2 [] = L"This is wide character array"; wcout << str2; }
出力
This is character array This is wide character array
次に、ワイド文字に使用されるいくつかの関数を見てみましょう。
関数 | 説明 |
---|---|
wcslen() | 構文はsize_t wcslen(const wchar_t * wcs);です。この関数は、ワイド文字列の長さを取得するために使用されます。 |
wcscat() | 構文は次のとおりです。wchar_t* wcscat(wchar_t * strDest、const wchar_t * strSrc);この関数は、ソース文字列を宛先文字列と連結するために使用されます。 |
wcscpy() | 構文はwchar_t * wcscpy(wchar_t * strDest、const wchar_t * strSrc);です。ソース文字列を宛先文字列にコピーするのに役立ちます。 |
wcsncpy() | 構文はwchar_t * wcsncpy(wchar_t * dest、const wchar_t * src、size_tn);です。この関数は、ソースの最初のn文字を宛先にコピーするために使用されます。終了OSソースがn未満の場合、宛先にはヌル文字が含まれます。 |
wcscmp() | 構文はint wcscmp(const wchar_t * wcs1、const wchar_t * wcs2);です。この関数は、2つのワイド文字ストリングwcs1とwcs2を比較するために使用されます。これは、通常の文字列比較のためのstrcmp()関数のようなものです。 |
wcsstr() | 構文はconst wchar_t * wcsstr(const wchar_t * wcs1、const wchar_t * wcs2);です。この関数は、wcs1で最初に出現するwcs2を見つけるために使用されます。存在しない場合は、nullを返します |
wcstok() | 構文はwchar_t * wcstok(wchar_t * str、const wchar_t * delim、wchar_t ** ptr);です。この関数はstrtok()に似ています。ワイド文字を使用して作成された文字列をトークン化するのに役立ちます。文字列をトークン化するには区切り文字が必要です。 |
-
STLとC++標準ライブラリの違いは何ですか?
標準テンプレートライブラリ(STL)は、C++標準ライブラリの多くの部分に影響を与えたC++プログラミング言語用のソフトウェアライブラリです。アルゴリズム、コンテナ、関数、イテレータと呼ばれる4つのコンポーネントを提供します。 「STL」または「標準テンプレートライブラリ」という用語は、ISO 14882C++標準のどこにも表示されないことに注意してください。したがって、C ++標準ライブラリをSTLと呼ぶのは間違っています。つまり、STLとC ++標準ライブラリは2つの異なるものであり、前者は後者のサブセットです。 STLはで構成されています コンテナ STLには、シーケンスコンテナと連想
-
C++文字列定数と文字定数の違い
C ++では、一重引用符で囲まれた文字は文字リテラルです。文字型です。たとえば、「a」は、ASCIIベースのシステムでは値97のchar型です。 二重引用符で囲まれた1文字または文字列は、文字列リテラルを表します。これはconstchar[]型であり、文字列の長さ+1のサイズの配列を参照します。その余分な文字は文字列の終わりを示すためにあります。 文字列リテラルは、「abcdefg」のように任意の長さにすることができます。文字リテラルには、ほとんどの場合、1文字だけが含まれます。これらが印刷されるとき、文字列リテラルは、文字列で最初の\0またはNULL文字が検出されるまで印刷されます。