C++ 如何将整个字符数组设置为空格?

j0h*_*b0y 5 c++

假设我有以下声明的变量:

char mychararray[35];
Run Code Online (Sandbox Code Playgroud)

我想将数组中的每个字符设置为一个空格......我该怎么做?

我的导师告诉我我所要做的就是把

mychararray = "";
Run Code Online (Sandbox Code Playgroud)

但这根本不起作用......

我使用的是过时版本的 Visual Studio (2012),还是这只是一个错误的初始化?如果是后者,请说明如何使所有字符都为空格。

提前致谢!

Ish*_*ael 8

您可以在声明数组时按照教师建议的方式对其进行初始化:

char mychararray[35] = "";
Run Code Online (Sandbox Code Playgroud)

它会将数组设置为空字符串。

如果你想稍后使它成为一个空字符串,那么你可以这样做

mychararray[0] = '\0';
Run Code Online (Sandbox Code Playgroud)

如果要使其成为由 34 个空格(第 35 个字符为空终止符)组成的数组,则

memset(mychararray, ' ', 34);
mychararray[34] = '\0';
Run Code Online (Sandbox Code Playgroud)


And*_*owl 5

这不是初始化,而是赋值。要在声明数组时初始化数组,您可以编写:

char mychararray[35] = "";
Run Code Online (Sandbox Code Playgroud)

如果您已经有一个数组并想将其设置为零,您可以使用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.
}
Run Code Online (Sandbox Code Playgroud)

然而,C 风格的数组在现代 C++ 中并不是很流行。首选使用std::string(您可以使用clear()成员函数清除),或者std::array<char, N>如果您需要在编译时知道大小。