c++ - c ++使用char数组创建字符串
问题描述
目前正在学习字符串,我有以下情况:
string s;
s[0]='a'; s[1]='b';
cout<<s;
string s; s.clear();
s+='a'; s+='b';
cout<<s;
我得到空字符串作为第一个示例的输出,第二个工作正常。我知道第一个是 undef 行为,我们第二次“推送”一个元素而不是分配一个值。任何更多的澄清将不胜感激。
解决方案
运算符[]
返回对pos
字符串中位置字符的引用,它读取 value 而不是 insert 和 resize std::string
。
你不能插入到空分配值,这就是你得到undefined behaviour
. 首先调整字符串大小,然后尝试使用[]
运算符插入。
推荐阅读
- c# - 为什么 System.Web.Mvc 中有 ExpressionHelper.GetExpressionText?
- firefox - Firefox - 输入/表单的默认配色方案?
- html - 我怎样才能使这个网站响应?
- angular - 是否可以在角度组件而不是服务中注入令牌?
- python - http put 时如何仅使用 django rest 框架更新部分 db 记录参数?
- c# - ETO 表单中的动态布局缓慢
- json - Elixir/Phoenix 将 JSON 保存到 Postgres 数据库
- scala - Spark:如何使用 crossJoin
- python - Keras:添加噪声后拆分训练和测试不起作用
- php - 在 PHP 7 中为 SoapClient 调用生成一个数组