Удаление пустоты

Я новичок в c++ и сегодня столкнулся с проблемой, которая связана с обработкой строк. Для более понятного объяснения приведу пример:

#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
    string str;
    cin >> str;
    cout << str.length() << endl;
    return 0;
}

Если в консоли передать к примеру строку "символы", то str.length() вернёт значение 14. Но если сначала написать любую последовательность русских символов и потом стереть её , то значение str.length() станет больше на количество стёртых символов, например сначала напишем "см", после чего сотрём и вновь напишем "символы", тогда значение str.length() станет равно 16. Но поводом для действительно долгих размышлений, стало то, что если стереть "см" и ещё 2 раза стереть пустоту и ввести "символы", тогда str.length() вновь возвращает 14. Почему или из-за чего так происходит?


Ответы (0 шт):