C ++添加到字符串(输出)

下面是c ++语句的提示:

cout << "TESTING" + 2 << endl;

我了解为什么此声明会打印出刺痛。但是我的问题是,如果我执行下面的代码,将会导致错误。我不明白为什么这是同一回事。对不起一个基本问题,我是c ++的新手。

 string t = "TESTING";
 cout << t + 2 << endl;

在此先感谢您的帮助。 :)

sarah928 回答:C ++添加到字符串(输出)

这是一个有趣的案例。我不确定您是否实际打印了第一条语句的结果,但是如果您看到,实际上是得到"STING"而不是"TESTING2"或类似的东西! / p>

这里发生了一些事情。在第一个语句中,您正在使用string literal构造一个字符串。在这种情况下,C ++创建一个const char[N]并将您的字符串放入其中。由于char[N]从技术上讲是一个数组(并且数组是一个指针),因此运算符+充当增量,并且"TESTING" + 2的结果实际上是指向{{1}的第二个元素的指针},即"TESTING"。您不会看到任何错误,因为C ++认为您想要做什么。

在第二条语句中,您要告诉C ++我想要一个"STING"对象。 std::string的设计安全性更高,如果您尝试向其添加字符串以外的其他内容,则会will不休。因此,这样做时会出现错误。为了使第二条语句按预期工作,应写std::string

,

了解字符串和char类型之间的区别很重要。字符串是管理字符串的类。而char []是一个字符数组。请参考this问题进行解释。如果您这样做,代码将起作用:

#include <iostream>

int main ()
{
char t[] = "TESTING";
std::cout << t + 2 << std::endl;
return 0;
}

如果要将字符串与int连接,则应显式转换它:

#include <iostream>

int main ()
{
std::string m = "Testing ";
std::cout << m + std::to_string(2) << std::endl;
return 0;
}
本文链接:https://www.f2er.com/3165445.html

大家都在问