C++文字列リテラルエスケープ文字のルールから、エリの答え
std::string ("0\0" "0", 3) // String concatenation
このバージョンのコンストラクターは char 配列を取るため、機能します。"0\0" "0" を const char* として渡そうとすると、それは C 文字列として扱われ、ヌル文字まですべてがコピーされます。
これは、文字列全体にスペースが割り当てられていないことを意味しますか?つまり、\0 の後の文字列は割り当てられていないスペースに書き込まれますか?
さらに、上記の質問は c++ 文字列に関するものですが、c 文字列についても同じ動作を観察しました。宣言中に文字列の途中に null char を追加すると、c と c++ の文字列は同じですか?