C++ - 创建具有相同字符的特定大小的以 null 结尾的 c 样式字符串的更好方法

C++ - A better way to create a null terminated c-style string of specific size with same character

本文关键字:null 结尾 方法 更好 字符串 样式 创建 字符 C++      更新时间:2023-10-16

我希望创建一个以空结尾的c-style string,其中每个字符都-(连字符(。我正在使用以下代码块:

char output_str[n + 1];
std::fill(output_str, output_str + n, '-');
output_str[n + 1] = '';

1(有没有更聪明C++的方法可以做到这一点?

2(当我打印字符串的大小时,输出是n,而不是n + 1。我做错了什么还是空字符从未计算在内?

编辑:

请考虑此代码块而不是上面的代码块:

char output_str[n + 1];
std::fill(output_str, output_str + n, '-');
output_str[n] = '';

请忽略有关尺寸的问题。

有没有更聪明C++的方法可以做到这一点?

当然,使用std::string来做到这一点:

std::string s(n,'-');
const char* cstyle = s.c_str();

1(有没有更聪明C++方法可以做到这一点?

使用 String 类:

std::string output_str(n,'-');

如果您需要旧 C 样式的字符串

output_str.c_str(); // Returns a const char*

2(当我打印字符串的大小时,输出是n,而不是n + 1。我做错了什么还是空字符从未计算在内?

在您的代码中,不会添加 N caracter。如果数组预先填充为零,strlen 函数将返回 N。