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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
spooky81
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
#1

Замена первой буквы на заглавную - C++

14.05.2013, 21:39. Просмотров 1570. Ответов 7
Метки нет (Все метки)

здравствуйте, помочите с созданием функции:
надо поменять первую букву каждого слова на заглавную в строке в стиле Си
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 21:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена первой буквы на заглавную (C++):

Замена первой буквы во всех словах на заглавную - C++
Доброго времени суток! Помогите написать программу которая во всех словах заменит первую букву на заглавную.

Замена строчной буквы на заглавную - C++
Вобщем требуется написать программу (Visual C++ 2008 Express Edition), которая открывает текстовый файл-список, содержащий имена файлов по...

Замена первой строки на последнюю - C++
Вот моя рабочая программка: #include "stdafx.h" #include <iostream> #include <time.h> using namespace std; int main() { int...

Замена отрицательных элементов первой строчки на 0 - C++
Дана целочисленная матрица размера 5х5. Заменить в данной матрице все отрицательные элементы первой строки на 0.

Вывод первой буквы из массива - C++
Доброго времени суток! Передо мной стоит задача вывести слово в предложении, которое находится под определенным номером и вывести его...

Изменить регистр первой буквы в слове - C++
Записать фамилию, имя и отчество. Вывести фамилию большими буквами с помощью strupr.

7
Убежденный
Системный программист
Эксперт С++
15685 / 7195 / 1136
Регистрация: 02.05.2013
Сообщений: 11,630
Записей в блоге: 1
Завершенные тесты: 1
14.05.2013, 21:43 #2
std::toupper
0
spooky81
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
14.05.2013, 21:46  [ТС] #3
Спасибо, но нужно написать собственную функцию))
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
14.05.2013, 21:53 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <cstring>
#include <cctype>
 
const char* upperFirst(char* str)
{
    bool state = true;
    for (char* pt = str; *pt != '\0'; ++pt)
    {
        if (isspace(*pt))
        {
            state = true;
        }
        else if (state && isalnum(*pt))
        {
            state = false;
            *pt = toupper(*pt);
        }
    }
    return str;
}
 
int main()
{   
    char str[] = "hello world...., and peace. to all.";
    std::cout << upperFirst(str) << std::endl;
}
Добавлено через 1 минуту
Убежденный, toupper() не меняет первую букву каждого слова на заглавную
1
Убежденный
Системный программист
Эксперт С++
15685 / 7195 / 1136
Регистрация: 02.05.2013
Сообщений: 11,630
Записей в блоге: 1
Завершенные тесты: 1
14.05.2013, 21:56 #5
Если только для латиницы, тогда так:
берем код символа, определяем, попадает ли он в диапазон "a-z", если да -
сбрасываем пятый бит. Но это будет работать только для латиницы.
Вообще, не во всех языках возведение символа в верхний регистр имеет смысл и
локализации не зря придумали. Поэтому "просто так" такую функцию самому не написать.

Добавлено через 39 секунд
Цитата Сообщение от xtorne21st Посмотреть сообщение
Убежденный, toupper() не меняет первую букву каждого слова на заглавную
А что, циклы в C++ уже отменили ?
2
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
14.05.2013, 22:08 #6
Убежденный, как пожелаете:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
const char* upperFirst(char* str)
{
    bool state = true;
    for (char* pt = str; *pt != '\0'; ++pt)
    {
        if (*pt == ' ' || *pt == '\n' || *pt == '\t')
        {
            state = true;
        }
        else if (state && (*pt != ' ' || *pt != '\n' || *pt != '\t'))
        {
            state = false;
            *pt &= ~(1 << 5);
        }
    }
    return str;
}
 
int main()
{   
    char str[] = "hello world...., and peace. to all.";
    std::cout << upperFirst(str) << std::endl;
}
Добавлено через 2 минуты
Но что-то мне кажется, что последний вариант более платформозависимый. Ибо нет гарантии что "хак" с битами будет одинаково интерпретироваться на всех машинах одинаково.
1
Убежденный
Системный программист
Эксперт С++
15685 / 7195 / 1136
Регистрация: 02.05.2013
Сообщений: 11,630
Записей в блоге: 1
Завершенные тесты: 1
14.05.2013, 22:12 #7
Цитата Сообщение от xtorne21st Посмотреть сообщение
Но что-то мне кажется, что последний вариант более платформозависимый. Ибо нет гарантии что "хак" с битами будет одинаково интерпретироваться на всех машинах одинаково.
Да, согласен. Но дело не только в битах.
Правильная реализация данной функции должна принимать два аргумента - строку и локаль.
И использовать эту локаль для приведения символов в верхний регистр.
1
tomichka
Сообщений: n/a
02.07.2013, 15:58 #8
Прошу прощения за некомпетентный вопрос, но если я не программист и не пишу коды, возможно ли какой-то совсем простой опцией включить автозамену первой буквы предложения на заглавную? Купила новый ноут для работы, на Win8, ужасно бесят маленькие буквы в начале предложений(( На автомате пишу так, потом приходится вручную исправлять... Заранее спасибо за ответ!
02.07.2013, 15:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2013, 15:58
Привет! Вот еще темы с ответами:

Количество вхождений первой буквы в слово - C++
Задача такая: Нужно создать текстовый документ там вписать несколько строк со словами. Программа считывает этот файл и если первая буква...

Удалить вхождения первой буквы в словах предложения - C++
нужно составить программу , которая удаляет вхождения первой буквы в словах предложения,помогите на c++:cry:

После первой буквы каждого слова вставить символ “-” - C++
После первой буквы каждого слова вставить символ “-”. Нужно в С++

Вывести слова в предложении по номеру первой буквы в алфавите - C++
Написать программу ввода-вывода текста.Каждое слово в предложении выводить по номеру первой буквы в алфавите соседние буквы поменять местами


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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