文字列
C++の文字列はcharの配列です。
- 「char str[] = "hoge";」で簡単に初期化可能です。
- 文字列を引数として渡す場合、ポインタを指定して参照渡しとします。(配列なので当たり前といえば当たり前。)
- 「std::cout <<」では、渡されたポインタからnull文字('\0')までを文字列とみなして表示します。(配列の長さではありません。)
- このため文字列長+1の配列として、最後に"\0"を付加しておく必要があります。
- 「char str[] = "hoge";」で初期化した場合、"\0"は自動で付加されます。
// 配列を受け取る関数。 void out( char str[] ) { std::cout << str << std::endl; } int main() { // 文字列はcharの配列 //char str[] = "hoge"; コレでもOK。この場合、'\0'は勝手に挿入される。 char str[5]; str[0] = 'h'; str[1] = 'o'; str[2] = 'g'; str[3] = 'e'; str[4] = '\0'; // '\0'で文字列の終わりとみなされる。 std::cout << str << std::endl; // hoge std::cout << sizeof str / sizeof str[0] << std::endl; //長さの取得 / 4 // 日本語 char str2[] = "日本語"; std::cout << str2 << std::endl; // 日本語 std::cout << sizeof str2 / sizeof str2[0] << std::endl; //10 / 文字コードがUTF-8だからかな? // 引数で渡す場合も配列と同じくポインタで渡す。 out( str ); // hoge return 0; }
実行結果です。
hoge 5 日本語 10 hoge