You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++生成指定长度重复字符字符串出错,求问题排查与实现方案

C++生成重复字符字符串的问题分析与解决

问题根源

你使用的string s(".",50);调用了错误的std::string构造函数:
这个版本的构造函数签名是basic_string(const CharT* s, size_t n),它会从传入的C风格字符串s中复制前n个字符。但你传入的".\0"是长度仅为1的有效字符串(只有'.'是有效字符,后面的'\0'是终止符),复制50个字符必然会读取超出字符串范围的未知内存,导致输出乱码,属于内存越界访问。

正确实现方式(对应Python的"c"*n)

方法一:直接使用指定重复次数的构造函数

这是最简洁高效的方式,使用std::string(size_t count, CharT ch)构造函数,第一个参数是重复次数,第二个是要重复的字符:

#include <iostream>
#include <string>

using namespace std;

int main(){
  string s(50, '.');
  cout << s << endl;
}

方法二:动态追加字符

如果需要在已有字符串基础上扩展,可以用append方法:

string s;
s.append(50, '.'); // 追加50个'.'

方法三:循环填充(不推荐,效率较低)

仅作参考,不建议用于大数量的重复:

string s;
for (int i = 0; i < 50; ++i) {
    s += '.';
}

内容的提问来源于stack exchange,提问作者subjectsphinx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:15:44