Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Payla01
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 4
#1

Написать функцию-парсер, принимающую строку и удаляющую из нее все комментарии типа /* */

07.12.2015, 20:44. Просмотров 850. Ответов 4
Метки нет (Все метки)

В общем, мне нужна помощь, я вообще бес понятия как это сделать:

Мне нужно написать Функцию, принимающую строку и удаляющую из нее все комментарии типа в С++ стиле, т.е. начинающиеся на /* и заканчивающиеся на */

Помогите пожалуйста, зарание спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2015, 20:44
Ответы с готовыми решениями:

Написать функцию, принимающую указатель на строку и выполняющую удаление всех букв «а» из строки
Написать функцию, принимающую указатель на строку и выполняющую удаление всех...

Написать и протестировать функцию compress(), которая "сжимает" строку, удаляя из нее все пробелы.
Добрый вечер))не могли бы вы мне помочь с задачками,они в принципе лёгкие ,мы...

Написать и протестировать функцию compress(), которая "сжимает" строку, удаляя из нее все пробелы.
Приветик всем.Немогли бы вы мне написать эти 2 програмки Написать и...

Написать функцию, удаляющую все пробелы из строки s
Вводить через клавиатуру.

рекурсия.написать функцию,принимающую указ. на другую функцию, осуществл. некую операцию с переданным х
рекурсия.написать функцию,принимающую указ. на другую функцию, осуществл. некую...

4
RobinHood
20 / 20 / 13
Регистрация: 08.12.2015
Сообщений: 70
Завершенные тесты: 6
08.12.2015, 09:40 #2
Payla01, допиливай:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
 
int main(void) {
    std::string source;
    std::ifstream readFile("1.txt");
    getline(readFile, source, '\0');
    while(source.find("/*") != std::string::npos) {
        size_t Beg = source.find("/*");
        source.erase(Beg, (source.find("*/", Beg) - Beg)+2);
    }
    while(source.find("//") != std::string::npos) {
        size_t Beg = source.find("//");
        source.erase(Beg, source.find("\n", Beg) - Beg);
    }
    std::cout << source;
    return 0;
}
0
Croessmah
++Ͻ
14539 / 8299 / 1559
Регистрация: 27.09.2012
Сообщений: 20,365
Записей в блоге: 3
Завершенные тесты: 1
08.12.2015, 10:09 #3
Цитата Сообщение от Payla01 Посмотреть сообщение
из нее все комментарии типа в С++ стиле, т.е. начинающиеся на /* и заканчивающиеся на */
А если комментарий заключен в кавычки?
Пример: "/*comment*/"
по сути, "в стиле c++" это уже не комментарий, а строковый литерал.
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
08.12.2015, 15:11 #4
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

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
27
28
29
30
31
32
33
34
35
36
37
//написать Функцию, принимающую строку и удаляющую из нее все комментарии типа в С++ стиле, 
//т.е. начинающиеся на /* и заканчивающиеся на */
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <regex>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string             T_str;
///////////////////////////////////////////////////////////////////////////////
void    delete_comments( T_str  &   s )
{
    std::regex      rx("/\\*.*?\\*/");
    std::string     replacement     =   "";
 
    s     =   std::regex_replace
                    (
                        s, 
                        rx, 
                        replacement
                    );
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        std::cout   <<  "s -> ";
        T_str   s;
        getline( std::cin,  s );
        delete_comments(s);
 
        std::cout   <<  s
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }//for
}
2
Payla01
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 4
16.12.2015, 19:38  [ТС] #5
А можно это как-нибудь для char переделать?
0
16.12.2015, 19:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2015, 19:38

Создать функцию, которая формирует строку, включив в нее все совпадающие символы двух строк
создать функцию которая формирует строку, включив в нее все совпадающие символы...

Написать функцию, принимающую массив структур Student
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; struct...

Написать функцию, которая переворачивает строку (массива типа char).
Вот задание: Написать функцию reversit(), которая переворачивает строку...


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

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

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