gpt4 book ai didi

c++ - 没有用于调用 basic_string::copy 的匹配函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:10 25 4
gpt4 key购买 nike

我是 C++ 的新手,已经用它摆弄了一段时间。如果对这些错误有任何见解,我将不胜感激。以下程序应产生以下结果:

#include <iostream>
#include <string>

using namespace std;

string Cut(string &strString, int nStart, int nLength)
{
string strCopy;
strString.copy(strCopy, nLength, nStart);
strString.erase(nStart, nLength);
return strCopy;
}

int main()
{
string strHate = "I hate tuna.";
cout << strHate << endl;
string strTuna;
strTuna = Cut(strHate, 8, 4);
cout << strHate << endl;
cout << strTuna << endl;
}

应该产生

I hate tuna.
I hate .
tuna

然而,我却收到了这条错误信息:

9|error: no matching function for call to 'std::basic_string<char>::copy(std::string&, int&, int&)'

非常感谢,

小偷猫

最佳答案

引用here ,函数 std::string.copy 接受一个类型为 char * 的参数,你已经给它一个类型为 string 的参数/p>

这是一个更好的解决方案:

string Cut(string &strString, int nStart, int nLength){
string strCopy (strString, nStart, nLength);
strString.erase(nStart, nLength);
return strCopy;
}

这会直接从构造函数中的字符串创建字符串,因此更优雅一些。

为了让您知道为什么发生错误,变量的数据类型(intcharstring 等)必须匹配函数期望接收的数据类型。如果您不知道某个函数希望接收哪些数据类型,您可以随时在 Google 上查找。

此外,您需要使用:

strTuna = Cut(strHate, 7, 4)

代替:

strTuna = Cut(strHate, 8, 4)

这是因为字符串的第一个字符的位置是 0 而不是 1

关于c++ - 没有用于调用 basic_string::copy 的匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16879832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com