我希望创建一个空终止的c-style string
,其中每个字符都是-
(连字符)。我使用以下代码块:
char output_str[n + 1];
std::fill(output_str, output_str + n, '-');
output_str[n + 1] = '\0';
1)这样做是否有更聪明的 C ++方式?
2)当我打印字符串的大小时,输出为n
,而不是n + 1
。我做错了什么或者空字符从未计算过?
修改
请考虑此代码块而不是上面的代码:
char output_str[n + 1];
std::fill(output_str, output_str + n, '-');
output_str[n] = '\0';
请忽略有关尺寸的问题。
答案 0 :(得分:4)
有更聪明的C ++方法吗?
当然,使用std::string
来做到这一点:
std::string s(n,'-');
const char* cstyle = s.c_str();
答案 1 :(得分:0)
1)有更聪明的C ++方法吗?
使用String类:
std::string output_str(n,'-');
如果您需要旧C风格的字符串
output_str.c_str(); // Returns a const char*
2)当我打印字符串的大小时,输出是n,而不是n + 1.我做错了什么或者空字符从未计算过?
在您的代码中,不添加N字符。如果数组预先填充为零,则strlen函数将返回N.