我对 substr 函数有疑问(C++)
I have a problem with substr function(C++)
嗯,我应该return一个字的中间字符。如果单词的长度是奇数,return 中间字符。如果单词的长度是偶数,return 中间的 2 characters.Like "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");
}
看看您的代码,它 return 是 中间 字符吗(无论哪种情况)?不,因为你说 input.substr(1,..)
它 return 是 第二个 字符。
你想要的是奇数情况下的这个
return input.substr(input.length()/2, 1);
我会留给你解决偶数问题。
事实上,如果您非常聪明,您可以对奇数和偶数情况使用相同的公式。
我猜问题是你没有得到中间字符(请下次说明问题)。第一个参数应该是你想要的子字符串中第一个字符的索引,意思是 input.length() / 2
首先,你的main方法不正确。请将“Main”更改为“main”和return一些整数值。
这就是您完成任务的方式。
#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;
}
输出:
t
es
现在第一个输出是奇数串,第二个是偶数串。
嗯,我应该return一个字的中间字符。如果单词的长度是奇数,return 中间字符。如果单词的长度是偶数,return 中间的 2 characters.Like "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");
}
看看您的代码,它 return 是 中间 字符吗(无论哪种情况)?不,因为你说 input.substr(1,..)
它 return 是 第二个 字符。
你想要的是奇数情况下的这个
return input.substr(input.length()/2, 1);
我会留给你解决偶数问题。
事实上,如果您非常聪明,您可以对奇数和偶数情况使用相同的公式。
我猜问题是你没有得到中间字符(请下次说明问题)。第一个参数应该是你想要的子字符串中第一个字符的索引,意思是 input.length() / 2
首先,你的main方法不正确。请将“Main”更改为“main”和return一些整数值。
这就是您完成任务的方式。
#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;
}
输出:
t
es
现在第一个输出是奇数串,第二个是偶数串。