如何将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 *" 类型的实体
如何将C++中string类型的字符串赋给unsigned char数组