Использование типа 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
?, Было бы полезно знать, почему это происходит!
EDIT: Я просто принять строку через станд :: КИН, такие как:
std::string analyse = "";
std::cin >> analyse;
Это не std :: string, которая может содержать любой символ, включая пробелы и нули. Покажите, как вы читаете строку. –
Как вы настраиваете 'анализ'? Что вы получаете, если вы 'cout << analyse.length()'? Правильно ли подсчет строки «aecio»? Может быть, проблема в части '...' блока else? –
на стороне .. сохранить длину в переменной (const int ci = analyse.length();) функции в for - плохая практика. – baash05