char s[] = "asqa0";
string p;
cin >> p;
puts(s);
puts(p);
在这里,最后一个puts(p);
给我一个错误。 puts
与const char *p
一起使用,其中指向的字符不能更改,但指针本身可以更改,那么为什么它可以与char数组一起使用?
答案 0 :(得分:2)
puts()
期望以空值结尾的const char *
指针作为输入。
puts(s)
之所以有效,是因为s
是一个char[]
数组,它会衰减到char *
指针,然后该指针可以隐式转换为{{ 1}}指针。
const char *
不起作用,因为puts(p)
是p
,并且没有std::string
的重载,该重载将puts()
作为输入。您将需要使用std::string
方法来获取合适的std::string::c_str()
指向字符串数据的指针:
const char *
但是,根本没有充分的理由在C ++中使用puts(p.c_str());
。请改用puts()
,因为std::cout
和operator<<
的数据都已const char *
超载:
std::string