こんにちは、次のコードがあります。
char msg[10000];
string mystr = "hello";
// stores mystr into msg
copy(mystr.begin(), mystr.end(), msg);
コードをコピーした後、char msg[10000] の内容をクリアしたい。それ、どうやったら出来るの?
近代的な設備の使用
std::array<char, 10000> msg;
string mystr = "hello";
// stores mystr into msg
copy(mystr.begin(), mystr.end(), msg.begin());
// then clear it again
msg = {{}};
なぜ最初にコピーしてからクリアしたいのかわかりませんが、それがあなたのやり方です。C ++ 11の一般化された初期化子がなければ、次のように言うことができます
msg = std::array<char, 10000>();
もちろん、boost::array
代わりstd::array
にいつでも使用できます。同じように機能します。
本当に配列全体をクリアしたい場合memset
は、Andrewが提案したように使用するのがその方法です。ただし、文字列として長さがゼロであることを確認したいだけの場合は、最初のエントリのみをクリアするだけで十分です。
msg[0] = '\0';
char msg[10000];
memset(msg, 0, 10000);
埋められたデータのサイズがわかっている場合:
memset(msg, 0, SizeOfFilledData);