此處的此代碼用於反轉字符串中的字。問題是它只能反轉字符串中的第一個單詞。當我跑過蹤跡時,發現它在遇到語句後停止了。if(s[indexCount] == '\0') break;
字符串中的反轉字
爲什麼每當第一個單詞逆轉時,即使其他字符出現在第一個單詞後面,代碼也會變爲空字符。
#include <iostream>
using namespace std;
int main()
{
string s;
char tchar;
int indexCount=0,charCount=0,wordIndex;
cin>>s;
while(1){
if(s[indexCount]==' ' && charCount==0) continue;
if(s[indexCount]==' ' || s[indexCount]=='\0'){
wordIndex=indexCount-charCount;
charCount=indexCount-1;
while(charCount!=wordIndex && charCount>wordIndex){
tchar=s[wordIndex];
s[wordIndex]=s[charCount];
s[charCount]=tchar;
charCount--;
wordIndex++;
}
if(s[indexCount] == '\0') break;
indexCount++; charCount=0;
}
else{
charCount++;
indexCount++;
}
}
cout<<"\nReveresed words in the string : \n\t"<<s<<endl;
return 0;
}
另外我使用的是while(1)
。它是否使這是一個錯誤的代碼?
您可能想要將其更改爲'while(true)'。我不會說它是「壞」,但如果可以的話,你應該在「while」條款中加入一個明確的條件。這樣,當你看到循環時,它說明了循環操作的條件。 –
對於哪些輸入您收到不良結果? – fghj
反轉整個字符串和反轉字符串中的單詞有什麼區別? –