c++ - 为什么 std::string 在添加整数时返回字符串的尾部

标签 c++ string

<分区>

我知道您不能使用 operator+ 将整数连接到 std::string 而不将其转换为 char*std::string.

但为什么添加一个整数会返回字符串的尾部?

#include <iostream>
#include <string>
int main()
{
    std::string x;
    x = "hello world" + 3;
    std::cout << x << std::endl;
}

打印:lo world

如果你改变:x = "hello world"+ 8;

我们打印:rld

这背后的原因是什么?未定义的行为?

最佳答案

你需要知道你的类型。首先,您没有将 3 添加到 std::string。添加发生在 std::string 被创建之前。相反,您向已定义的 char[12] 添加 3,因为 char 数组衰减为 char*,向其添加 3 会使指针前进 3 个元素。这正是您所看到的。

std::string 是根据结果构造的,您最终得到一个尾部

关于c++ - 为什么 std::string 在添加整数时返回字符串的尾部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167128/

相关文章:

c++ - 不确定我对 C++ 中函数声明的解释?

c - 使用指针反转字符串中的单词

python - 将打包数据解码为结构

python - 如何在 python 3.4 中检查数组中元素的字符串

java - 正在添加到列表的字符<String>

C++ Windows 移除最大化框

c++ - 为什么我们必须为带有默认参数的模板类指定<>?

c++ - 为什么在调用这个列表时需要 "&"?

c++ - 试图绘制部分巨大源代码的序列图

java - 在Java中逐字母合并两个字符串?