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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
RosyRose
0 / 0 / 0
Регистрация: 28.07.2012
Сообщений: 23
#1

Функция работы со строкой символов,заменить разделители - C++

23.08.2012, 20:59. Просмотров 1843. Ответов 6
Метки нет (Все метки)

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

Описать функцию работы со строкой символов - C++
Описать функцию работы сос строкой символов, которая проверит, начинается ли каждое слово с большой буквы.

Задан файл f1. Сформировать ф2, разбивая ф1 на строки(разделители - точка или 20 символов) - C++
Задан текстовый файл f1.Сформировать файл f2 из файла f1, разбивая его на строки так, чтобы каждая строка оканчивалась точкой, либо...

Какая функция сравнивает строку s2 со строкой s1? - C++
Какая функция сравнивает строку s2 со строкой s1?

Введите строкой набор символов без разделителей - C++
3. Введите строкой набор символов без разделителей (пробел). Подсчитайте и выведите на консоль количество используемых символов и частоту...

Запуск нескольких раз программы для работы со строкой - C++
Добрый вечер,пишу в Borland C++ DOSBox.Проблема в том, что я запускаю программу RUN'ом,программы выводит правильный результат,я жму...

Если в файле с новой строки есть 5 пробелов - заменить их на новый абзац, отделяющийся пустой строкой - C++
задача:дан текстовый файл.Если в нем с новой строки есть 5 пробелов то заменить их на новый абзац отделяющийся 1 пустой...

6
Пaтрик
416 / 391 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
23.08.2012, 21:05 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
 
bool is_del(const char& ch)
{
    return ispunct(ch) || isspace(ch);
}
 
int main()
{
    std::string str = "this is a string";
    std::replace_if(str.begin(), str.end(), is_del, '\t');
    std::cout << str << std::endl;
}
1
RosyRose
0 / 0 / 0
Регистрация: 28.07.2012
Сообщений: 23
23.08.2012, 21:44  [ТС] #3
А можете пояснить что в данном месте происходит?

bool is_del(const char& ch)
{
return ispunct(ch) || isspace(ch);
}
0
Пaтрик
416 / 391 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
23.08.2012, 22:03 #4
Функция возвращает истину если переданный ей символ ch является пробельным или символом пунктуации.
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
24.08.2012, 01:22 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
 
void str_replace_chrs(char* src, const char* chrs, char chr) {
 
    while(*src) {
 
        if(std::strchr(chrs, *src) != NULL)
            *src = chr;
        ++src;
    }
}
 
int main() {
 
    char str[256];
 
    std::cout << "input string: ";
    std::cin.getline(str, sizeof(str));
    
    str_replace_chrs(str, " ,.:;?!", '\t');    
    std::cout << "result: " << str << std::endl;
}
1
RosyRose
0 / 0 / 0
Регистрация: 28.07.2012
Сообщений: 23
24.08.2012, 19:06  [ТС] #6
Спасибо, оба варианта хорошо работают.Вариант решения от rangerx более понятен для меня.
rangerx, если не трудно прокомментируйте программу, не все моменты поняла
0
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
24.08.2012, 19:48 #7
RosyRose,
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>
#include <cstring>
 
// Функция заменяет найденные в строке src символы строки chrs на символ chr.
void str_replace_chrs(char* src, const char* chrs, char chr) {
 
    while(*src) {  // пока не конец строки
 
        if(std::strchr(chrs, *src) != NULL) // Условие будет истинным,
                                            // если текущий символ строки окажется символом из chrs
            *src = chr;                     // и тут он будет заменён на символ chr. (strchr - библиотечная функция).
        ++src;                              // Двигаем указатель на следующий символ строки.
    }
}
 
int main() {
 
    char str[256];
 
    std::cout << "input string: ";
    std::cin.getline(str, sizeof(str));     // Вводится строка.
 
    str_replace_chrs(str, " ,.:;?!", '\t'); // Функция ищет в введённой строке str символы строки ",.:;?!" и заменяет их на '\t'.
    std::cout << "result: " << str << std::endl;
}
2
24.08.2012, 19:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2012, 19:48
Привет! Вот еще темы с ответами:

Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и п - C++
Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой...

Работа со строкой (удалить все цифры, подсчитать количество и сумму удаленных цифр, заменить все заглавные латинские буквы на строчные) - C++
Из заданной строки удалить все цифры, подсчитать количество и сумму удаленных цифр, заменить все заглавные латинские буквы на строчные

Заменить пары символов на одну - C++
в символьном массиве все пары символов 'PH' заменить на 'Z' for (int i=0; i&lt;strlen(m); i++) { if (m=='p' &amp;&amp; m=='h') { ...

Заменить пару символов на 1 символ - C++
Добрый день. Есть строка. Нужно заменить каждую пару букв &quot;ле&quot; на &quot;ю&quot;, &quot;са&quot; – на &quot;щ&quot;, &quot;ик&quot; – на &quot;ж&quot; Просьба помочь примером для одной...


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

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

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