C++ 为什么puts()不适用于声明的字符串?
这里,最后一个C++ 为什么puts()不适用于声明的字符串?,c++,string,output,puts,C++,String,Output,Puts,这里,最后一个放置(p)给了我一个错误puts与const char*p一起工作,其中指向的字符不能更改,但指针本身可以更改,那么为什么它与字符数组一起工作?puts()需要一个以null结尾的const char*指针作为输入 put(s)之所以有效,是因为s是一个char[]数组,该数组衰减为char*指针,然后该指针隐式转换为const char*指针 put(p)不起作用,因为p是一个std::string,并且没有将std::string作为输入的put()重载。您需要使用std::s
放置(p)代码>给了我一个错误puts
与const char*p
一起工作,其中指向的字符不能更改,但指针本身可以更改,那么为什么它与字符数组一起工作?puts()
需要一个以null结尾的const char*
指针作为输入
put(s)
之所以有效,是因为s
是一个char[]
数组,该数组衰减为char*
指针,然后该指针隐式转换为const char*
指针
put(p)
不起作用,因为p
是一个std::string
,并且没有将std::string
作为输入的put()
重载。您需要使用std::string::c_str()
方法获取指向字符串数据的合适const char*
指针:
char s[] = "asqa0";
string p;
cin >> p;
puts(s);
puts(p);
但是,在C++中,没有任何理由使用<代码>引用(或)>代码>。使用<代码> STD::CUT,它已经加载了操作器,使用的是Pube,它是用C++ STD字符串的C打印功能。您可以使用std::cout或put(p.c_str())来修复代码。
puts(p.c_str());
cout << s;
cout << p;