c++ - 为什么string和int之间的+运算符充当substr

标签 c++ string

当尝试将 stringint 连接时(不使用 std::to_string,只是为了看看会发生什么),我看到没有编译错误,但实际结果很奇怪。

我试图在 cplusplus.com 上搜索 + 运算符是如何为 string 定义的,但是我在 string 之间找不到这个运算符的任何定义int

用于测试串联的代码如下:

std::cout << "Test" + 3 << std::endl;

我原以为会出现编译错误,但我只是在控制台中得到了一个t,这让我有点吃惊。

为什么这个操作符会这样,它是在哪里定义的?

感谢您的回答。

最佳答案

你用的不是string+ int,你用的是const char* + int,那是指针算术。

这是一个指向"Test"的指针,你将它递增3,这意味着指针指向子字符串"t"

关于c++ - 为什么string和int之间的+运算符充当substr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54445222/

相关文章:

java - 将 Scanner next 字符串转换为 Int 并检查输入的文本是否为数字

string - 根据字符串列表过滤 Scala 字符串序列

python-3.x - 如何从Python中的字符串创建日期时间索引?

c++ - 为什么 enqueueAcquireGLObjects() 会在此 OpenCL 代码中泄漏内存?

c++ - 正确使用 MPI 和 std::string

c++ - C++ 中的信号 : using a member function

c++ - 使用 JNIEnv::FindClass:我需要释放返回的 jclass 引用吗?

r - 如何在R中连接数据框的行?

c++ - 数字为 std::string 还是 double?

c++ - 将 std::list 附加到 std::list 的 vector 中