C++ 尝试使用strcmp时出现字符转换错误
我有一个函数,可以剪切一个字符串并将其存储到一个新数组中C++ 尝试使用strcmp时出现字符转换错误,c++,arrays,string,strcmp,C++,Arrays,String,Strcmp,我有一个函数,可以剪切一个字符串并将其存储到一个新数组中 char splitStr(int cutPoint){ int i=0; char newStr[20]=""; for(i=0;i<cutPoint;i++){ newStr[i]=comm[i]; } cout<<newStr; } 但是当我做这个检查时,我得到一个错误如下 C:\Users\U\Desktop\main.cpp [Error] invali
char splitStr(int cutPoint){
int i=0;
char newStr[20]="";
for(i=0;i<cutPoint;i++){
newStr[i]=comm[i];
}
cout<<newStr;
}
但是当我做这个检查时,我得到一个错误如下
C:\Users\U\Desktop\main.cpp [Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
我如何解决这个问题?造成这种情况的原因是什么?三个问题将转化为四个:
char
。不是像字符串那样指向字符的指针。更改为返回char*
splitStr
应该返回一个char
(或者char*
,一旦您解决了第一个问题),但实际上不返回任何内容。这将导致未定义的行为newStr
中终止字符串。这意味着您将字符串传递给的所有C字符串函数都将超出边界,并且您将再次具有未定义的行为newStr
。一旦函数返回,该本地数组将超出作用域,留下一个指向不再存在的数据的指针为静态
。这意味着它的生命周期将是整个程序的生命周期,指向数组中数据的指针永远不会失效。不幸的是,这也将使函数不可重入,因此它永远不能在线程中使用或为不同的对象调用new[]
返回的指针(或首选的指针,而不是原始指针)。这里的问题是,当按您所展示的方式使用时,您将出现内存泄漏(如果您使用,将解决此问题)如果你使用它,那么你应该使用它,而不是自己制作。
char
和const char*
是完全不同的类型。
C:\Users\U\Desktop\main.cpp [Error] invalid conversion from 'char' to 'const char*' [-fpermissive]