【问题标题】:why can't I print the copied string individually? [closed]为什么我不能单独打印复制的字符串? [关闭]
【发布时间】:2021-10-21 06:06:08
【问题描述】:
string s="1 23";
string a;
a[0]=s[2];a[1]=s[3];
cout<<a;

在这里,我无法获得输出字符串 a。但我可以通过 a[0] 获取所有单个元素。

【问题讨论】:

  • 考虑 string a; 创建一个 0 个字符的字符串。一个“空字符串”。你的代码试图用这 0 个字符做什么?

标签: c++ c++14


【解决方案1】:

因为a 是空的,a[i] 对每个可能的i 都会越界访问它,从而导致未定义的行为。

使用a.push_back(s[i]) 将字符添加到a

【讨论】:

  • 或者,a += s[i]
【解决方案2】:

a 被初始化为一个空字符串,因此没有为其字符分配内存,因此当使用[] 访问它时,您访问的是未分配的内存,这是未定义的行为。

解决它的一种方法是将a 创建为分配了足够字符的字符串。您可以使用std::string fill 构造函数,用您选择的字符填充字符串:

std::string s = "1 23";
std::string a(s.size(), ' ');

这样您就可以将字符放入s 中存在的任何索引中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2016-12-30
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多