如何将char赋给const char *

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将char赋给const char *相关的知识,希望对你有一定的参考价值。

如何在C中为char char *分配char?

const char* cp;
unsigned maxlen = 20;
cp = new char[maxlen];
char p = 'U';
cp = p; 

我收到错误:

Error: invalid conversion from 'char' to 'const char*

如何将char p分配给数组cp的第一个元素?

答案

如何将char p分配给数组cp的第一个元素?

你不能,因为cp是指向const char的指针。 const防止初始化后的任何突变。

如果你真的想改变cp的元素,删除const

char* cp;
unsigned maxlen = 20;
cp = new char[maxlen];
char p = 'U';
cp[0] = p; 

请注意,上面是可怕的C ++。您应该将std::vector用于动态数组(或std::array用于固定大小的数组)。例:

std::vector<char> cp;
cp.resize(20);
cp[0] = 'U';
另一答案

你不能以安全的方式这样做,更好的想法是:

char * nonConstPtr = new char[len];
*nonConstPtr = 'a';
nonConstPtr[1] = 0;
char const * constPtr = nonConstPtr;

你可以用你现在拥有的代码进行演员表,但抛弃常量通常是一个坏主意(tm):

const char* cp;
unsigned maxlen = 20;

cp = new char[maxlen];
char p = 'U';
char * ptr = (char*)cp;
memset(ptr, 0, maxlen);
*ptr = p;
另一答案

这是可以接受的还是错的?

unsigned maxlen = 20;
char *cp;
cp = (char*) malloc(sizeof(char) * maxlen);
char c = 'P';
*cp = c;

我知道缺少空终止。我尝试使用strncpy但它不适用于char。

非常感谢您的建议。

另一答案

如何将char赋值给const char *

  const char* cp;
  char p = 'U';
  cp = &p;

以上是关于如何将char赋给const char *的主要内容,如果未能解决你的问题,请参考以下文章

为啥在片段中从 char* 转换为 std::string 比转换为 const char* 更可取?

IntelliSense: 不能将 "const char *" 类型的值分配到 "char *" 类型的实体

在Qt中如何将QString转换为const char*

如何将C++中string类型的字符串赋给unsigned char数组

如何将 const char * 数组项添加到 const char * 字符串?

如何将 const char* 存储到 char*?