C++ &引用;转换为常量字符*”;向函数传递字符串时出错
我试图将字符串值传递给函数,但DevC++5.6.1报告了一个错误(从char到const char*的转换无效)。节目如下:C++ &引用;转换为常量字符*”;向函数传递字符串时出错,c++,string,parameters,char,constants,C++,String,Parameters,Char,Constants,我试图将字符串值传递给函数,但DevC++5.6.1报告了一个错误(从char到const char*的转换无效)。节目如下: #包括 #包括 使用名称空间std; 字符串mysubstr(字符串目标、整数开始位置、字符串结束字符){ 对于(int i=0;i>温度; 字符串day0=mysubstr(temp,0,'.'); 返回0; } 我想知道为什么会发生这种情况,以及如何解决它。非常感谢。 顺便说一下:如果功能头(第5行)更改为 string mysubstr(常量字符串和目标、整数开
#包括
#包括
使用名称空间std;
字符串mysubstr(字符串目标、整数开始位置、字符串结束字符){
对于(int i=0;i>温度;
字符串day0=mysubstr(temp,0,'.');
返回0;
}
我想知道为什么会发生这种情况,以及如何解决它。非常感谢。
顺便说一下:如果功能头(第5行)更改为
string mysubstr(常量字符串和目标、整数开始位置、字符串结束字符){
编辑:该函数应该如下所示。对原始函数的两个修改:(1)调用方应该使用双引号;(2)相比之下,我应该使用target.substr(I,0)。(3)现在使用两个参数start\u pos和end\u char
string mysubstr(字符串目标、整数开始位置、字符串结束字符){
对于(int i=0;i
您正在将字符与字符串进行比较(目标[i]=>”
),并将字符传递给字符串参数(。
用于结束字符
)。请注意,在函数中实际上不使用结束字符
,也不使用开始字符
。您正在将字符与字符串进行比较(target[i]==”
)并将字符传递给字符串参数(”。
用于end\u char
)。请注意,实际上在函数中不使用end\u char
,也不使用start\u pos
。将字符。
传递给类型为const char*
的参数。类型不匹配是您的问题。您可能需要使用字符串文字:
string day0 = mysubstr(temp, 0, ".");
// ^ ^
您正在将字符
。
传递给类型为const char*
的参数。类型不匹配是您的问题。您可能希望使用字符串文字:
string day0 = mysubstr(temp, 0, ".");
// ^ ^
函数的最后一个参数是
字符串
,但是当调用它时,您将传递一个字符
。您可以通过将该参数放在双引号而不是单引号中来解决问题,因为字符
数组隐式转换为字符串。函数的最后一个参数是string
,但当调用它时,您将向它传递一个char
。您可以通过将该参数置于双引号而不是单引号中来解决此问题,因为char
数组隐式转换为字符串