假设我有以下声明的变量:
char mychararray[35];我想把数组中的每个字符都设置为空格.我怎么能这么做?
我的教练告诉我我要做的就是
mychararray = "";但那根本不管用..。
我是在使用已过时的Visual (2012)版本,还是这只是一个错误的初始化?如果是后者,请解释如何使所有字符为空白。
提前感谢!
发布于 2015-02-08 18:51:11
在声明数组时,您可以按照指导员建议的方式初始化它:
char mychararray[35] = "";它将将数组设置为空字符串。
如果您希望稍后将其变为空字符串,则只需执行以下操作
mychararray[0] = '\0';如果您想使它成为一个由34个空格组成的数组(第35个字符为空终止符),那么
memset(mychararray, ' ', 34);
mychararray[34] = '\0';发布于 2015-02-08 18:53:14
那不是初始化,而是分配。要在声明数组时初始化数组,可以编写:
char mychararray[35] = "";如果您已经有了一个数组,并且希望将其设置为零,则可以使用std::fill
#include <algorithm>
#include <iterator>
int main()
{
char c[35] = "Hello, world!";
std::fill(std::begin(c), std::end(c), '\0');
// c will contain only zeros now.
}然而,C样式数组在现代C++中并不是很流行.更喜欢使用std::string (您可以使用clear()成员函数清除它),或者使用std::array<char, N> (如果您需要在编译时知道大小)。
发布于 2015-02-08 18:51:29
std::memset是你的朋友。
memset(mychararray, ' ', 34);
mychararray[34]='\0';如果您想在所有元素都是'\0'的情况下初始化数组,则可以通过聚合初始化进行更整洁的操作。
char mychararray[35] = {};https://stackoverflow.com/questions/28397936
复制相似问题