Строки в c ++ заканчиваются нулем, что означает, что после их последнего символа есть символ '\0'
с символьным кодом 0x00
. Чтобы прочитать каждый символ массива строк / символов, вы просто используете оператор индекса []
. Строки в C ++, как и другие массивы, индексируются от 0 до n-1
вот пример для цикла, который будет читать символ строки в символьную переменную.
void iterate_through_characters(const char* aString) {
// starting at n=0 check each n and make sure it is shorter than the
// width of the array
// and that it's not the null terminating character
for (int n = 0; (n < MAX_LENGTH + 1) && (aString[n] != '\0'); n++) {
// take the character out of the index in the string and store it in aCharacter
char aCharacter = aString[n];
}
}
Для вашего особого случая вы также хотели бы отслеживать, находитесь ли вы в слове или нет, и считать только новое слово, если вы еще не в слове. Следующая функция реализует это.
int wordCount(const char* input) {
// this is true if we're in a word
bool inWord = false;
// the number of words we've seen defaulting to 0, no words
int result = 0;
for (int n = 0; (n < MAX_LENGTH + 1) && (aString[n] != '\0'); n++) {
// if this is a space we're not in a word
if (aString[n] == ' ') {
inWord = false; // if we were in a word, we aren't now
} else if (!inWord) {
inWord = true; // if we weren't in a word, we are now
result ++; // increment the number of words we've seen
}
}
return result;
}