为什么 puts() 不适用于声明的字符串

why puts() does not work with declared string?

本文关键字:声明 字符串 适用于 不适用 puts 为什么      更新时间:2023-10-16
char s[] = "asqa0";
string p;
cin >> p;
puts(s);
puts(p);

在这里,最后一个puts(p);给了我一个错误。 puts适用于无法更改指向字符但指针本身可以更改的const char *p,那么为什么它适用于 char 数组?

puts()需要一个以 null 结尾的 const char * 指针作为输入。

puts(s)工作是因为s是一个char[]数组,它衰减char *指针,然后隐式转换为const char *指针。

puts(p)不起作用p因为它是一个std::string,并且没有以std::string作为输入的puts()过载。 您需要使用 std::string::c_str() 方法来获取指向字符串数据的合适const char *指针:

puts(p.c_str());

但是,根本没有充分的理由在C++中使用puts()。 请改用 std::cout,这会对const char *std::string数据造成重载operator<<

cout << s;
cout << p;