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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
AdPotam
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
#1

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

10.01.2011, 17:35. Просмотров 1333. Ответов 6
Метки нет (Все метки)

Подскажите, пожалуйста, как применить функцию 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 17:35     Как реализовать tolower()?
Посмотрите здесь:

функция tolower() - C++
Необходимо изменить регистр на нижний. Как только не пробовал не получается. Получается если я задаю строку заранее, что на русском что...

Функции tolower,islower,isupper - C++
Если кто знаком с функциями tolower,islower,isupper, дайте пожалуйста с каждой примитивный пример с маленьким коментом, как их...

Tolower для русских букв - C++
Есть символьный массив с русскими буквами: &quot;Сегодня Прекрасная Погода&quot;. Мне нужно заглавные буквы изменить с верхнего регистра на нижний....

toupper, tolower, strlen и кириллица - C++
Эти три функции не хотят нормально работать с кириллицей. Если им скормить американские литеры, все нормально. Но вот, например, эта...

Найти первые вхождения символов (функции strchr(), tolower()) - C++
В массиве строк , введенных пользователем , найти первые вхождения символов ' s ' и 'S' . Использовать функции strchr ( ) , tolower ( ) .

Заменить функцию tolower на ручную функцию - C++
В общем проблема такова. Tolower работает только с англ.яз вводимых данных. А мне нужно что бы работало на рус. Какой ручной функцией...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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
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++
Задана окружность, с помощью координат центра и радиуса. Определить, лежит ли она полностью в первой четверти. 1вывожу окружность и ...

Как процедуру в Паскале реализовать, как функцию в с++? - C++
Здравствуйте! Есть код на Паскале. Нужно процедуру реализовать в С++ как функцию. Возможно ли в моем случае? Попробовал по-всякому, но у...

Как реализовать в c++ - C++
// ConsoleApplication2.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include &quot;math.h&quot; ...

Как реализовать? - C++
добрый вечер, прораммисты! Помогите, пожалуйста, советом. Есть таблица в excel, которая содержит информацию о ТО транспорта(водитель,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru