C++ C++;-使用相同字符创建特定大小的以null结尾的c样式字符串的更好方法
我希望创建一个以null结尾的C++ C++;-使用相同字符创建特定大小的以null结尾的c样式字符串的更好方法,c++,string,fill,C++,String,Fill,我希望创建一个以null结尾的c样式字符串,其中每个字符都是-(连字符)。我正在使用以下代码块: 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_st
c样式字符串
,其中每个字符都是-
(连字符)。我正在使用以下代码块:
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';
请忽略关于尺寸的问题
有没有更聪明的C++方法来做这个?< /P> 当然,可以使用
std::string
来执行以下操作:
std::string s(n,'-');
const char* cstyle = s.c_str();
有没有更聪明的C++方法来做这个?< /P> 当然,可以使用
std::string
来执行以下操作:
std::string s(n,'-');
const char* cstyle = s.c_str();
< P > 1)有更聪明的C++方法来做这个吗?< /P>
使用字符串类:
std::string output_str(n,'-');
以防您需要旧C样式的字符串
output_str.c_str(); // Returns a const char*
2) 当我打印字符串的大小时,输出是n,而不是n+1。我是否做错了什么,或者空字符从未计算在内
在代码中,不添加N字符。如果数组预先填充了零,strlen函数将返回N
< P > 1)有更聪明的C++方法来做这个吗?< /P>
使用字符串类:
std::string output_str(n,'-');
以防您需要旧C样式的字符串
output_str.c_str(); // Returns a const char*
2) 当我打印字符串的大小时,输出是n,而不是n+1。我是否做错了什么,或者空字符从未计算在内
在代码中,不添加N字符。如果数组预先填充了0,则STRLN函数将返回N.< /P> <代码> OutPuthStru[n+1] < /C> >超出界限。VLA的标准不是C++。确保<代码> N<代码>是<代码> CONTXPRP<代码>代码> OutPuthStru[n+1] < /C> >超出界限。VLA不是标准C++。确保
n
是constexpr
只是好奇,什么是旧的C?@mvds使用char*作为strings@amchacon对于较新的c标准来说,这并没有改变。只是好奇,旧的c是什么?@mvds使用char*表示strings@amchacon对于较新的c标准来说,这一点还没有改变。作为奖励,一些(但不是全部)实现使用,这意味着此代码可以将其所有数据存储在堆栈上(对于足够小的n
),就像您问题中的代码一样!作为奖励,一些(但不是所有)实现使用,这意味着此代码可能会将其所有数据存储在堆栈上(对于足够小的n
),就像您问题中的代码一样!