我试图扭转字符串中的单词。
实施例, 输入:为xsd bf 会产生输出: sa dsx fb 。
我的问题是,最后一句话不会反转。
示例,输入:为xsd bf 会产生输出: sa dsx bf 。你可以看到bf没有反转。
我的代码,
#include<iostream>
#include<string>
using namespace std;
void RevWords(string inp);
int main()
{
string input;
cout<<"Enter Sring:"<<endl;
getline(cin,input);
cout<<"Entered String:"<<input<<endl;
RevWords(input);
return 0;
}
void RevWords(string inp)
{
int wordEnd=0,indexS=0,indexE=0;
string newStr;
newStr=inp;
while(wordEnd<inp.length())
{
if(inp[wordEnd] != ' ')
{
wordEnd++;
}
else
{
if(inp[wordEnd] == ' ' || inp[wordEnd] == '\0')
{
indexE=wordEnd-1;
while(indexS<wordEnd)
{
newStr[indexS]=inp[indexE];
indexS++;
indexE--;
}
newStr[indexS]=' ';
indexS++;
}
wordEnd++;
}
}
cout<<newStr<<endl;
}
答案 0 :(得分:1)
你不会处理最后一个字,因为你在到达那里之前就停止了:
while(wordEnd<inp.length()) { // When you finally get to the last letter. You will
// exit on the next loop iteration.
if(inp[wordEnd] != ' ')
您需要将其更改为:
while(wordEnd<=inp.length()) {
if(wordEnd < inp.length() && inp[wordEnd] != ' ') {
//^ This is important so you dont go out of bounds on your string