使用std::string
類型來接受一個句子,練習(我沒有用過C++中的字符串)我正在檢查一個字符是不是元音。我得到這個:C++:爲什麼空格在讀取時總是終止一個字符串?
for(i = 0; i <= analyse.length(); i++) {
if(analyse[i] == 'a' || analyse[i] == 'e' [..etc..]) {
...vowels++;
} else { ...
...consonants++;
}
這工作正常,如果字符串是一個詞,但第二次我添加一個空格(IE:aeio aatest),它將只算第一模塊和計數的空間作爲輔音,並退出閱讀句子(退出for循環或什麼的)。
是否將空格計爲無字符== null?或者與std::string
有一些奇怪之處?,這將有助於知道爲什麼發生這種情況!
編輯: 我只是通過給std :: cin接受字符串,如:
std::string analyse = "";
std::cin >> analyse;
它不是std :: string,它可以容納任何字符,包括空格和空值。顯示你如何閱讀字符串。 – 2010-06-01 04:01:45
你如何設置「analyse」?如果你'cout << analyse.length()',你會得到什麼?字符串「aecio」是否正確計數?也許問題出在else塊的'...'部分? – 2010-06-01 04:03:39
在一邊..將長度存儲在變量(const int ci = analyse.length();)for中的函數是不好的做法。 – baash05 2010-06-01 06:09:27