像C++中的java一样打印变量
我的代码:
#include<iostream>
int main(){
int n=2;
std::cout << "hello world"+n<<std::endl;
printf("hello world");
}
我试图像java语法一样打印变量C++,只是作为一个实验。但是输出:
llo world
hello world
谁能解释一下?
回答
"hello world"是一种const char[12]类型。这衰变到const char*时,它的参数的类型+运营商。
指针运算然后被施加到该const char*类型,并且重载ostream操作者<<用于const char*:指针输出字符开始在该新指向的位置n从该字符数组的开始字符。
如果您觉得std::cout << "hello world" << n << std::endl;令人反感并且宁愿采用+某种串联模式(在 Java 中这只不过是一种杂乱无章的东西;除了 之外,Java 中没有实现运算符重载java.lang.String),然后使用
std::cout << "hello world" + std::to_string(n) << std::endl;
然后使用了std::string重载的+a const char*,<<与二进制相比的较低优先级+就派上用场了。