Форум программистов, компьютерный форум CyberForum.ru

Как реализовать tolower()? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
AdPotam
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
10.01.2011, 17:35     Как реализовать tolower()? #1
Подскажите, пожалуйста, как применить функцию tolower() к переменной типа vector<int>::size_type
Вот фрагмент кода, приводящий к ошибке:
C++
1
2
3
4
 vector<string> sval;
.....
for (vector<int>::size_type i = 0; i != sval.size(); ++i) 
 sval[i] = tolower(sval[i]);
Вот ошибка:

error: no matching function for call to 'tolower(std::basic_s
tring<char>&)'

Компилятор - GCC
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
reich
 Аватар для reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
10.01.2011, 18:01     Как реализовать tolower()? #2
tolower принимает идентификатор символа(значение из таблицы ASCII кодов)
То есть передавать туда нужно символ, а не строку
C++
1
2
3
4
5
    for ( std::vector<std::string>::const_iterator p = sval.begin(); p != sval.end(); ++p ){
        for ( std::string::const_iterator s = (*p).begin(); s != (*p).end(); ++s ){
            std::cout << static_cast<char>( tolower( (*s) ) );
        }
    }
Добавлено через 4 минуты
вот так все строки в векторе заменятся на такие же только символами в нижнем регистре.(первый вариант их выведет в консоль)
C++
1
2
3
4
5
    for ( std::vector<std::string>::iterator p = sval.begin(); p != sval.end(); ++p ){
        for ( std::string::iterator s = (*p).begin(); s != (*p).end(); ++s ){
            (*s) = static_cast<char>( tolower( (*s) ) );
        }
    }
AdPotam
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
10.01.2011, 18:17  [ТС]     Как реализовать tolower()? #3
reich, понятно, итераторы ещё не проходил, они в следующем парагафе. Странно, почему автор книги дает задания, для решения которых нужны знания, которые читатели еще не проходили?
reich
 Аватар для reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
10.01.2011, 18:21     Как реализовать tolower()? #4
Цитата Сообщение от AdPotam Посмотреть сообщение
reich, понятно, итераторы ещё не проходил, они в следующем парагафе. Странно, почему автор книги дает задания, для решения которых нужны знания, которые читатели еще не проходили?
тут не обязательно использовать итераторы
C++
1
2
3
4
5
6
7
    int sz_string = 0, sz_vector = sval.size();
    for ( int i = 0; i < sz_vector; i++ ){
        sz_string = sval[i].size();
        for ( int j = 0; j < sz_string; j++ ){
            sval[i][j] = (char)tolower( sval[i][j] );
        }
    }
AdPotam
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
10.01.2011, 19:06  [ТС]     Как реализовать tolower()? #5
Почему нельзя написать так, выкидывает ту же ошибку, вроде привел к char-у:
C++
1
2
       for (vector<int>::size_type i = 0; i != sval.size(); ++i) 
    sval[i] = (char) tolower(sval[i]);
reich
 Аватар для reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
10.01.2011, 20:04     Как реализовать tolower()? #6
Цитата Сообщение от AdPotam Посмотреть сообщение
Почему нельзя написать так, выкидывает ту же ошибку, вроде привел к char-у:
C++
1
2
       for (vector<int>::size_type i = 0; i != sval.size(); ++i) 
    sval[i] = (char) tolower(sval[i]);
Потому, что sval[i] - это std::string, а не int
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2011, 09:48     Как реализовать tolower()?
Еще ссылки по теме:

C++ Tolower для русских букв
C++ Заменить функцию tolower на ручную функцию
C++ Найти первые вхождения символов (функции strchr(), tolower())

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AdPotam
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
12.01.2011, 09:48  [ТС]     Как реализовать tolower()? #7
Понятно, спасибо reich!
Yandex
Объявления
12.01.2011, 09:48     Как реализовать tolower()?
Ответ Создать тему
Опции темы

Текущее время: 21:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru