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::arraystd::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 回答