C++ &引用;转换为常量字符*”;向函数传递字符串时出错

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(常量字符串和目标、整数开

我试图将字符串值传递给函数,但DevC++5.6.1报告了一个错误(从char到const char*的转换无效)。节目如下:

#包括
#包括
使用名称空间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
数组隐式转换为字符串