C++ substr函数(C+;+;)有问题

C++ substr函数(C+;+;)有问题,c++,function,substring,substr,C++,Function,Substring,Substr,我应该返回一个单词的中间字符。如果单词的长度为奇数,则返回中间字符。如果单词的长度为偶数,则返回中间的2个字符,如“test”=>“es”或“testing”=>“t”。 这就是我所写的 #include <iostream> std::string get_middle(std::string input) { if (input.length() % 2 == 0) { return input.substr(1,2); } else { return

我应该返回一个单词的中间字符。如果单词的长度为奇数,则返回中间字符。如果单词的长度为偶数,则返回中间的2个字符,如“test”=>“es”或“testing”=>“t”。 这就是我所写的

#include <iostream>
std::string get_middle(std::string input) 
{
  if (input.length() % 2 == 0) {
    return input.substr(1,2);
  } else {
    return input.substr(1,1);
  }
};

int Main() {
  get_middle("test");
  get_middle("testing");
}
#包括
std::string get_middle(std::string input)
{
if(input.length()%2==0){
返回输入substr(1,2);
}否则{
返回输入substr(1,1);
}
};
int Main(){
获取中间值(“测试”);
获得中间(“测试”);
}

查看您的代码,它是否返回中间的字符(在任何一种情况下)?否,因为您说的是
input.substr(1,…)
它返回第二个字符

你要的是这个奇怪的案子

return input.substr(input.length()/2, 1);
我让你来解决这个问题


事实上,如果你非常聪明的话,你可以对奇数和偶数都使用相同的公式。

我猜问题在于你没有得到中间字符(请下次说明问题)。第一个参数应该是子字符串中所需的第一个字符的索引,表示input.length()/2

首先,主方法不正确。请将“Main”更改为“Main”,并返回一些整数值

这就是你如何完成任务的方法

    #include <iostream>
using namespace std;
std::string get_middle(std::string input)
{
    if (input.length() % 2 == 0) {
        return input.substr((input.length() / 2)-1, 2);
    }
    else {
        return input.substr(input.length()/2, 1);
    }
};
 int main() {
    //cout<<get_middle("test")<<endl;
    cout<<get_middle("testing")<<endl;
    cout << get_middle("test") << endl;
    
    return 0;
}
#包括
使用名称空间std;
std::string get_middle(std::string input)
{
if(input.length()%2==0){
返回input.substr((input.length()/2)-1,2);
}
否则{
返回input.substr(input.length()/2,1);
}
};
int main(){

//能理解你的问题是什么吗?请花点时间阅读,阅读SO,阅读,以及。然后你的问题包括对你的问题的描述,你得到了什么结果,你期望得到什么结果。参考文献可能也很好阅读。
substr
的第一个参数是什么?为什么你总是通过
1
,不管字符串有多长?
int Main(){
我认为这是一个输入错误,因为
c++
是区分大小写的。谢谢,你的代码工作正常。我很高兴你发现它很有用。请竖起大拇指,接受我的回答。