首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++如何将整个字符数组设置为空白?

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

Stack Overflow用户
提问于 2015-02-08 18:48:33
回答 5查看 47.9K关注 0票数 5

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

代码语言:javascript
复制
char mychararray[35];

我想把数组中的每个字符都设置为空格.我怎么能这么做?

我的教练告诉我我要做的就是

代码语言:javascript
复制
mychararray = "";

但那根本不管用..。

我是在使用已过时的Visual (2012)版本,还是这只是一个错误的初始化?如果是后者,请解释如何使所有字符为空白。

提前感谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-02-08 18:51:11

在声明数组时,您可以按照指导员建议的方式初始化它:

代码语言:javascript
复制
char mychararray[35] = "";

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

如果您希望稍后将其变为空字符串,则只需执行以下操作

代码语言:javascript
复制
mychararray[0] = '\0';

如果您想使它成为一个由34个空格组成的数组(第35个字符为空终止符),那么

代码语言:javascript
复制
memset(mychararray, ' ', 34);
mychararray[34] = '\0';
票数 9
EN

Stack Overflow用户

发布于 2015-02-08 18:53:14

那不是初始化,而是分配。要在声明数组时初始化数组,可以编写:

代码语言:javascript
复制
char mychararray[35] = "";

如果您已经有了一个数组,并且希望将其设置为零,则可以使用std::fill

代码语言:javascript
复制
#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> (如果您需要在编译时知道大小)。

票数 5
EN

Stack Overflow用户

发布于 2015-02-08 18:51:29

std::memset是你的朋友。

代码语言:javascript
复制
memset(mychararray, ' ', 34);
mychararray[34]='\0';

如果您想在所有元素都是'\0'的情况下初始化数组,则可以通过聚合初始化进行更整洁的操作。

代码语言:javascript
复制
char mychararray[35] = {};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28397936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档