当尝试将 string
与 int
连接时(不使用 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/