C++ 为什么我在字符串中添加数字时,它会在c++;?
当我尝试向字符串添加文本时,会得到随机值 代码:C++ 为什么我在字符串中添加数字时,它会在c++;?,c++,string,int,C++,String,Int,当我尝试向字符串添加文本时,会得到随机值 代码: #包括 使用名称空间std; int main() { cout老实说,我不知道通过将int添加到字符串来实现什么目的。如果要添加333+4,则需要将字符串解析为int,如下所示: 编辑:打字错误 #包括 using namespace std; int main() { cout << std::stoi("333") + 4; } 使用名称空间std; int main() { cout“333”是一个常量字符[4]而
#包括
使用名称空间std;
int main()
{
cout老实说,我不知道通过将int添加到字符串来实现什么目的。如果要添加333+4,则需要将字符串解析为int,如下所示:
编辑:打字错误
#包括
using namespace std;
int main()
{
cout << std::stoi("333") + 4;
}
使用名称空间std;
int main()
{
cout“333”
是一个常量字符[4]
而不是您可能期望的std::string
(顺便说一句,它仍然没有运算符+
用于int
)。添加4,您将其添加到常量字符*
,然后将指针移动4*sizeof(char)
字节,使其指向内存中包含垃圾。之所以发生这种情况,是因为这两种类型不同,而且加法运算符的工作方式与您预期的不一样。
如果要将字符串文本“333”与int值4连接起来,只需使用count,如:
cout << "333" << 4; // outputs: 3334
注意:使用stoi()时:如果字符串还包含文字,则转换将从字符串开头获取整数值,或者在字符串以文字开头时引发错误:
cout << stoi("333ab3") + 4; // same as 333 + 4, ignoring the rest, starting a
cout << stoi("aa333aa3") + 4; // raise error as "aa" can't be casted to int
cout当您想要在文本中添加文本时,解决方案是使用适当的类型:
cout << std::string( "333" ) + "4";
我只是好奇:你到底希望得到什么?-除了糟糕的使用名称空间std;
,这不可编译。我糟糕的输入错误:std::stoi(“333”)+4、 它们不是不兼容的,但执行的操作是指针算术,而不是加法或串联。OP希望将文本添加到字符串,而不是数字number@Quentin它们不是不兼容的,没错,但即使这是一个合法的指针算术运算,你也应该看到这并不是提问者所期望的它们不适合获得预期的结果。只要结果不是预期的结果,您可以确定他不需要指针算术(即使询问者也没有指定).所以,我的观点是,你不能把狗和鸟结合在一起得到飞机…回答更新,谢谢你的指点。这可能误导了其他人,也许,因为我没有那么明确。
cout << stoi("333ab3") + 4; // same as 333 + 4, ignoring the rest, starting a
cout << stoi("aa333aa3") + 4; // raise error as "aa" can't be casted to int
cout << std::string( "333" ) + "4";
using namespace std::string_literals;
cout << "333"s + "4"s;