非常简单的代码会警告我。一些提示不是建设性的。警告是:
ISO C ++禁止将字符串常量转换为'char *'[-Wwrite-strings]
我尝试过:
char const *q = "pin";
char const *r = "\n\r";
{
while(client.findUntil(*q, *r))
没有成功
原始代码:
while(client.findUntil("pin", "\n\r"))
答案 0 :(得分:1)
ISO C ++禁止将字符串常量转换为'char *'[-Wwrite-strings]
# if using yarn $(yarn bin)/ts-node $(yarn bin)/tslint -p . # if using npm $(npm bin)/ts-node $(yarn bin)/tslint -p .
警告表示您的程序格式错误。您没有显示声明,但是根据上下文,我们可以推断出while(client.findUntil("pin", "\n\r"))
的参数为findUntil
。您不得将字符串文字传递给此类函数。
它过去格式正确-但已过时-在C ++ 11之前传递字符串文字为char*
。
我尝试过:
char*
这些都是正确的,但是
char const *q = "pin"; char const *r = "\n\r";
这没有任何意义。以前您尝试传递字符串,但是现在您通过字符指针间接访问,因此您传递了字符。除非该函数是模板,否则它可能无法工作。
while(client.findUntil(*q, *r))
也不起作用,因为指向const的指针不会隐式转换为指向非const的指针。
正确的解决方案是将字符串文字复制到可修改的数组中:
findUntil(q, r)
另一种方法是修复char q[] = "pin";
char r[] = "\n\r";
{
while(client.findUntil(q, r))
以接受指向const char的指针。然后,您可以使用字符串文字,因为它们可以转换为指向const char的指针。