如何在switch语句中更改指针。错误:来自' const char *'的无效转换去#char;'

时间:2015-06-29 07:45:42

标签: c++ pointers

我使用emacs在C中使用此代码,其中我已经收到了输入,如果输入使用以下任何字符,我想用其余代码替换它们。但我收到一个错误。我做错了什么?

void askQuestion(char text[])
{
   for (char * p = text; *p; p++)
   {
      switch (*p)
      {
         case '<':
            *p = "";
            break;
         case '>':
            *p = "";
            break;
         case '#':
            *p = "\n";
            break;
         case '{':
            *p = " \"";
            break;
         case '}':
            *p = "\" ";
            break;
         case '[':
            *p = " \'";
            break;
         case ']':
            *p = "\' ";
            break;
      }

      cout << *p;
   }

}

并且它给了我错误

  

&#34;来自&#39; const char *&#39;的无效转换到&#39; char&#39;

如何修改此代码以更改指针?我只是希望能够用替换值打印出*p。我该怎么做呢?或者你会建议我做些不同的工作?或者换句话说,我怎么能写这个程序来修改输入。

1 个答案:

答案 0 :(得分:5)

这个答案考虑

  

我在C

中有这段代码

p此处为char *

由于您一次只接受一个charswitch个案例),您需要使用char值来填充*p,而不是< em> string ,如

*p = '\n';

等等。

请记住,""表示字符串文字(通常为char *类型),而''表示char字面值(不要感到惊讶,它的类型为int)。

也就是说,在C代码中,您无法使用cout,如评论中所述。