C++ 不推荐将字符串常量转换为‘;字符*’;编码
可能重复:C++ 不推荐将字符串常量转换为‘;字符*’;编码,c++,string,gcc,C++,String,Gcc,可能重复: 我在gcc编译器的3个位置收到“从字符串常量到'char*'的不推荐转换”错误 当我在代码块上编译它时,没有错误 char* decodeCode(char* encodedString) { const char* decodedString = ""; // ERROR char* a = encodedString; char store[10000]; for(int j=0;j <strlen(a);j++) {
我在gcc编译器的3个位置收到“从字符串常量到'char*'的不推荐转换”错误 当我在代码块上编译它时,没有错误
char* decodeCode(char* encodedString)
{
const char* decodedString = ""; // ERROR
char* a = encodedString;
char store[10000];
for(int j=0;j <strlen(a);j++)
{
if (isdigit(a[j]) || a[j] == '#')
continue;
else return ""; //ERROR
}
}
int main()
{
const char* a;
a = decodeCode("6999066263304447777077766622337778"); // ERROR
printf("%s",a);
return 0;
}
char*decodeCode(char*encodedString)
{
const char*decodedString=“;//错误
char*a=编码字符串;
字符存储[10000];
对于(int j=0;j,您需要在变量和函数的声明中添加const
限定符来解决此问题:
const char* decodeCode(const char* encodedString) {
....
const char* a = encodedString;
....
}
注意:函数的底部缺失,但请确保在不复制它的情况下不会返回store
。字符串文字的类型为const char[]
,这意味着您无法修改其内容。强制转换到char*
会生成一个没有此类约束的指针。请尝试const char*
。PS您应该停止编写操作C字符串并使用C样式I/O的代码(通过printf)有利于典型的C++方法,例如:代码> STD::String ,使用<代码> STD::CUT。@ USE1590595,这是我编译好的,这里是A。是的,你是对的,我正在编辑程序的第二个副本,而不是第一个,我正在编译。现在一切都很好。谢谢你的善意帮助。