「C++ Premiere」ブックからC++の文字列に関する例をテストしています。
const int size = 9;
char name1[size];
char name2[size] = "C++owboy"; // 8 characters here
cout << "Howdy! I'm " << name2 << "! What's your name?" << endl;
cin >> name1; // I input "Qwertyuiop" - 11 chars. It is more than the size of name1 array;
// now I do cout
cout << "Well, your name has " << strlen(name1) << " letters"; // "Your name has 11 letters".
cout << " and is stored in an array of " << size(name1) << " bytes"; // ...stored in an array of 9 bytes.
8 文字 + '\0' 文字だけで 11 文字が配列に格納されるのはどうしてでしょうか? コンパイルすると広くなりますか?または、文字列は別の場所に保存されていますか?
また、私はできません:
const int size = 9;
char name2[size] = "C++owboy_12345"; // assign 14 characters to 9 chars array
しかし、私が上に書いたことを行うことができます:
cin >> name1; // any length string into an array of smaller size
ここでのトリックは何ですか?NetBeans と Cygwin g++ コンパイラを使用しています。