为什么 puts() 不适用于声明的字符串
why puts() does not work with declared string?
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;
相关文章:
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 声明要在 qml 和 cpp 文件中使用的全局字符串
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 用于从 ANSI 字符串转换为 std::basic_string <TCHAR>的正确函数声明
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- 如何声明接受字符串、返回void的闭包的类型
- 我在 c++ 中声明字符串类型时遇到问题
- 在此范围C 中未声明字符串和char变量
- 无法声明字符串变量
- C++可变内存中声明字符串文本
- 如何在 c++ 中的类中声明字符串成员
- 在arduino中声明字符串的问题
- 声明字符串流ss之间的差异;和std::字符串流ss;在C++中
- 如何让用户输入声明字符串数组的大小
- 用常量字符串和字符串常量声明字符串有什么区别
- 可以使用特定名称声明字符串[]
- 在类中声明字符串类型(c++)
- 在GNU c++中声明字符串数组
- c++无法在派生类中声明字符串
- 使用声明字符串的 cin.getline