我正在做一个实验室作业,用户输入一个字符串以及字符串中要反转的子字符串的起点和终点。例如,如果用户输入字符串“go bobcats”以及数字 3(用于起始索引)和 7(用于结束索引),则输出应为“go accobts”。我能够编写一个递归函数来反转整个字符串(“go bobcats”变成“stacbob og”),但是我在子字符串方面遇到了麻烦。
完整字符串反转的代码:
void reversing(string s, int start, int end){
if(s.size() == 0){return;}
else{
reversing(s.substr(1), start + 1, end);
cout << s[0];
}
}
对于这个的开始和结束索引,我只输入了 0 和 9,因为那将是字符串的全长。
如何调整函数,使其仅反转在用户输入的索引处开始和结束的字符串?此外,使用我当前的函数,我必须endl
在 main 中使用 an 在字符串输出的末尾创建一个新行。有没有办法可以在函数内部做到这一点?如果我在每次迭代endl
后cout << s[0];
放置一个新行,使输出垂直:
s
吨
一个
C
b
○
b
○
G
主要实现:
string s;
int start, end;
cout << "Enter a string: ";
while(cin.peek() == '\n' || cin.peek() == '\r'){
cin.ignore();
}
getline(cin,s);
cout << "Now enter two numbers that are within the bounds of the string. ";
cin >> start >> end;
cout << "This is how your words look now:\n";
reversing(s,start,end);
cout << endl;