2

こんにちは、次のコードがあります。

char msg[10000];
string mystr = "hello";
// stores mystr into msg
copy(mystr.begin(), mystr.end(), msg);

コードをコピーした後、char msg[10000] の内容をクリアしたい。それ、どうやったら出来るの?

4

3 に答える 3

6

近代的な設備の使用

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にいつでも使用できます。同じように機能します。

于 2012-07-24T07:47:56.293 に答える
2

本当に配列全体をクリアしたい場合memsetは、Andrewが提案したように使用するのがその方法です。ただし、文字列として長さがゼロであることを確認したいだけの場合は、最初のエントリのみをクリアするだけで十分です。

msg[0] = '\0';
于 2012-07-24T07:48:47.610 に答える
1
char msg[10000];
memset(msg, 0, 10000);

埋められたデータのサイズがわかっている場合:

memset(msg, 0, SizeOfFilledData);
于 2012-07-24T07:42:22.030 に答える