【问题标题】:Type cast from unsigned const char * to char const *从 unsigned const char * 类型转换为 char const *
【发布时间】:2013-02-20 06:30:56
【问题描述】:

我想将unsigned const char * 转换为char const * 以传递给strcpy 函数

请推荐一些方法

【问题讨论】:

  • 现在出现错误“非法演员”
  • “现在出现错误”——“现在”是什么意思?你做了什么——你的代码在哪里?您能否将所有这些都添加到问题中(不在 cmets 中)?

标签: c++ c visual-c++


【解决方案1】:
(const char *) my_signed_char

在 C++ 中,有更多惯用的方法来转换它,但由于您使用的是 strcpy,因此您似乎不是在编写惯用的 C++。

【讨论】:

    【解决方案2】:

    这对我有用;是你的想法吗?

    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char ** argv)
    {
       const char foo[] = "foo";
       unsigned const char * x = (unsigned const char *) foo;
    
       char bar[20];
       strcpy(bar, (const char *)x);
    
       printf("bar=[%s]\n", bar);
       return 0;
    }
    

    请注意,如果您尝试将 (unsigned const char *) 指针传递给 strcpy 的第一个参数,那么您可能正在尝试做一些您不应该做的事情(编译器将其标记为错误是正确的) ;因为 strcpy() 将写入其第一个参数指向的内存,而 const 指针是不应写入数据的指针。

    【讨论】:

      【解决方案3】:

      在 ANSI C 中,我相信它应该可以正常工作,例如:

      #include <string.h>
      
      int main() {
      
        const char *s="test";
      
        unsigned const char *d = s;
        char dest[1000];
      
        strcpy(dest,d);
      }
      

      您可以尝试添加演员表:

      #include <string.h>
      
      int main() {
      
        const char *s="test";
      
        unsigned const char *d = s;
        char dest[1000];
      
        strcpy(dest,(const char *) d);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多