Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 清除C+中固定字符数组的内容+;赋值后_C++_Arrays_Char - Fatal编程技术网

C++ 清除C+中固定字符数组的内容+;赋值后

C++ 清除C+中固定字符数组的内容+;赋值后,c++,arrays,char,C++,Arrays,Char,嗨,我有以下代码: char msg[10000]; string mystr = "hello"; // stores mystr into msg copy(mystr.begin(), mystr.end(), msg); 在代码复制之后,我想清除char msg[10000]的内容。我该怎么做 char msg[10000]; memset(msg, 0, 10000); 如果您知道填充数据的大小: memset(msg, 0, SizeOfFilledData); 使用现代化设施

嗨,我有以下代码:

char msg[10000];
string mystr = "hello";
// stores mystr into msg
copy(mystr.begin(), mystr.end(), msg);
在代码复制之后,我想清除char msg[10000]的内容。我该怎么做

char msg[10000];
memset(msg, 0, 10000);
如果您知道填充数据的大小:

memset(msg, 0, SizeOfFilledData);

使用现代化设施

std::array<char, 10000> msg;

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

// then clear it again
msg = {{}};
std::array msg;
字符串mystr=“hello”;
//将mystr存储到msg中
复制(mystr.begin(),mystr.end(),msg.begin());
//然后再清除它
msg={{};
不知道你为什么要先复制然后清除,但这就是你可以做到的。如果没有C++11通用初始值设定项,您可以说

msg = std::array<char, 10000>();
msg=std::array();

当然,您可以始终使用
boost::array
而不是
std::array
,它的工作原理是一样的。

如果您确实想清除整个数组,那么按照Andrew的建议使用
memset
就是一种方法。但是,如果您只想确保字符串长度为零,只需清除第一个条目即可:

msg[0] = '\0';

如果你想清除这个字符串,那么把它复制到msg有什么意义呢?不过如果他正在学习,而且编译器不是新的,那么就会比以前更加混乱。