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

C++中向空string赋值char无输出,代码错误原因咨询

问题分析与解决

先看你的代码:

int main()
{
    string sample = "abcdef";
    string result; 
    result[0]='a';
    cout<<result[0];
}

错误原因

默认构造的std::string对象result是空的,它的长度为0,没有分配任何字符存储空间。直接通过result[0] = 'a'访问并修改索引0的位置,属于内存越界访问,这是C++里的未定义行为——程序可能没有报错,但也不会按预期工作,这里就表现为没有输出。

正确的写法

你可以用以下几种方式给空字符串添加字符:

  • 使用push_back方法:
    result.push_back('a');
    
  • 先调整字符串的大小,再赋值:
    result.resize(1);
    result[0] = 'a';
    
  • 初始化时直接指定字符和长度:
    string result(1, 'a');
    
  • 使用+=操作符:
    result += 'a';
    

为什么result = sample可行

赋值操作result = sample会自动为result分配足够的内存,把sample的内容完整复制过去,不存在内存越界的问题,所以能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:01:32