嗨,我有以下代码:
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);