非常简单的代码确实警告了我。有些提示没有建设性。警告是:
ISO C++ 禁止将字符串常量转换为 'char*' [-Wwrite-strings]
我试过:
char const *q = "pin";
char const *r = "\n\r";
{
while(client.findUntil(*q, *r))
Run Code Online (Sandbox Code Playgroud)
没有成功
原产地代码:
while(client.findUntil("pin", "\n\r"))
Run Code Online (Sandbox Code Playgroud)
eer*_*ika 15
ISO C++ 禁止将字符串常量转换为 'char*' [-Wwrite-strings]
Run Code Online (Sandbox Code Playgroud)while(client.findUntil("pin", "\n\r"))
警告意味着您的程序格式错误。您没有显示声明,但从上下文中,我们可以推断出 的参数findUntil是char*。您不能将字符串文字传递给此类函数。
char*在 C++11 之前,它曾经是格式良好的 - 但不推荐使用 - 传递字符串文字。
我试过:
Run Code Online (Sandbox Code Playgroud)char const *q = "pin"; char const *r = "\n\r";
这些本身是正确的,但是
Run Code Online (Sandbox Code Playgroud)while(client.findUntil(*q, *r))
这没有任何意义。以前您试图传递一个字符串,但现在您通过字符指针间接传递,因此您正在传递一个字符。除非函数是模板,否则这不可能工作。
findUntil(q, r) 也不会工作,因为指向 const 的指针不会隐式转换为指向非常量的指针。
正确的解决方案是将字符串文字复制到可修改的数组中:
char q[] = "pin";
char r[] = "\n\r";
{
while(client.findUntil(q, r))
Run Code Online (Sandbox Code Playgroud)
另一个是修复findUntil接受指向 const char 的指针。然后您可以使用字符串文字,因为它们可以转换为指向 const char 的指针。
| 归档时间: |
|
| 查看次数: |
53281 次 |
| 最近记录: |