【问题标题】:C++ invalid conversion from 'char' to 'const char*' [-fpermissive]|C++ 从 'char' 到 'const char*' 的无效转换 [-fpermissive]|
【发布时间】:2014-11-08 18:48:57
【问题描述】:

我对这段代码有疑问:

void keylist(char key)
{
   //check if the user presses a key
   if(GetAsyncKeyState(key))
   {
      string skey = key;
      buffer.append(skey);
      counter++;

   }
}

每次我尝试运行程序时都会出现以下错误: CodeBlocks Projects\CB32KLG\main.cpp|66|错误:从 'char' 到 'const char*' 的无效转换 [-fpermissive]|

【问题讨论】:

    标签: c++


    【解决方案1】:

    因为这个

    string skey = key;
    

    字符串中没有重载的构造函数,它只将字符作为输入。完整列表如下:-

    string();
    string (const string& str); 
    string (const string& str, size_t pos, size_t len = npos);  
    string (const char* s); 
    string (const char* s, size_t n);   
    string (size_t n, char c);  
    template <class InputIterator>
      string  (InputIterator first, InputIterator last);
    

    要修复,您可以使用:-

    string skey(1, key);
    

    【讨论】:

      【解决方案2】:
        string skey = key;
      

      string 中没有可行的转换构造函数,它只需要一个 char
      像这样初始化它:

      string skey{key};
      

      或者这个:

      string skey(1, key);
      

      【讨论】:

      • 另一个(有点令人惊讶)选项是使用string skey; skey = key;。不允许初始化,但赋值是(并且是字符整数,这也意味着这是完全合法的std::string s; s=3.14;
      猜你喜欢
      • 2016-01-20
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2014-07-30
      相关资源
      最近更新 更多