我用C++編寫了一些代碼來在字符串中顯示重複的字符,但是如果一個字符重複三次以上,代碼會不止一次地打印重複的字符。在字符串中顯示重複的字符
例如,如果字符串是aaaddbss
,它應該只打印出ads
但它打印aaads
代替。
我在做什麼錯?
cout << " Please enter a string" << endl;
cin.getline(input, 100); // example input (ahmad wahidy) the output reads a a h a d instead of a h d
for (int i = 0;input[i]!='\0'; i++)
{
for (int j = i+1;input[j]!='\0'; j++)
{
if (input[i] == input[j])
{
cout << input[i] << " ";
}
}
}
cout << endl;
推測這是C++?這是缺少'input'之類的定義。請做一個完整的例子。我有一種感覺'input'不是'std :: string',它應該是因爲使用原始字符緩衝區是一個糟糕的計劃。 – tadman
我建議你花一些時間閱讀Eric Lippert的[如何調試小程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/),並學習如何使用調試器逐行逐行掃描代碼。那麼這個問題會非常明顯。 –
@tadman'input'不能是'std :: string',因爲如果是的話它就不會編譯。 'cin'沒有接受'std :: string'的'getline'方法的重載。 –