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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 186
#1

Нахождение двухстрочных комментариев - C++

06.01.2014, 13:03. Просмотров 1191. Ответов 50
Метки нет (Все метки)

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
#include<iostream>
#include<string>
using namespace std;
int main()
{
    char str[100];
    cout<<"fragment koda please"<<endl;
    cin.getline(str,99);
    char* cbegin=strstr(str, "/*");
    if(cbegin!=NULL)
    {
        char* cend=strstr(cbegin+2, "*/");
        while(cbegin!=NULL)
        {
            if (cend==NULL)
            {
                for(char* pc=cbegin+2;pc!=str+strlen(str);pc++)
                    cout<<*pc;
                cout<<endl;
                break;
            }
            for(char* pc=cbegin+2;pc!=cend;pc++)
                cout<<*pc;
            cout<<endl;
            cbegin=strstr(cend+2, "/*");
            cend=strstr(cend+2, "*/");
        }
    }
    system("pause");
    return 0;
}
а вот как добавить сюда нахождение ещё и двухстрочных комментов?
т.е. //* *//

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

Решение: Удаление комментариев // и /* */ - C++
может кому пригодится#include &lt;cwchar&gt; #include &lt;ostream&gt; #include &lt;istream&gt; #include &lt;iostream&gt; namespace nocomment { ...

Удаление комментариев из файла - C++
Решил написать программу которая удаляет комментарии из файла и пишет текст в другой файл, но она вдруг запинается на некоторых...

Поиск и удаление комментариев из файла - C++
Добрый вечер. Язык С++ изучаю недавно, помогите, пожалуйста, написать программу. Задача программы: найти комментарии в файле после // или...

Удаление комментариев из листинга программы - C++
Создать программу, которая будет удалять из листинга программы на языке с++ (файл*.cpp) коментарии вида // коментарий. Для работы с...

Цвет комментариев в CODE::BLOCKS - C++
Подскажите кто пользуется этой IDE и знает как изменить цвет комментариев: // Поянение, а то у меня монитор яркий и приходиться глаза...

Поменять нахождение min среди двумерного массива, на нахождение min в каждой сточке - C++
Поменять нахождение min среди двумерного массива, на нахождение min в каждой сточке #include &lt;iostream&gt; #include &lt;cstddef&gt; #include...

50
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,400
Завершенные тесты: 1
06.01.2014, 14:20 #2
Алгоритм такой.
1. Дополнительно заводим переменную bool CommBegin=false;("Признак начала комментария")
2. Внутри цикла как и раньше ищем /* . Когда найдем делаем CommBegin=true;
3. Если CommBegin истина, то очередной символ - комментарий, и ищем */,
когда найдем снова делаем CommBegin=false;

Дерзайте!
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2014, 14:37 #3
Регулярные выражения используй от могу тебе написать "/\\*(?:\\s|.)*?\\*/" - должно находить однострочные комментарии.
0
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 186
06.01.2014, 15:38  [ТС] #4
Уважаемые,напишите пожалуйста дополнительный код с комментариями.
Я вообще ничего понять не могу
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2014, 16:18 #5
Цитата Сообщение от trans967 Посмотреть сообщение
Уважаемые,напишите пожалуйста дополнительный код с комментариями.
Я вообще ничего понять не могу
Тут нечего комментировать простейший код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <regex>
#include <string>
using namespace::std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    string s="sadjflasdjkf;lksadf /*строка 1 \n строка 2 \r\n\t строка 3 */";
    string result="";
 
    smatch sm;
    if(regex_search(s,sm,regex("/\\*(.|\\s)*?\\*/"))) result=sm[0].str();
    cout <<"result= "<<result<<endl;
 
    return 0;
}
0
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 186
06.01.2014, 17:24  [ТС] #6
#include <regex>

у меня на этой строке ошибку выдаёт.
нельзя включить такой файл.
Ах да, забыл.
Реализовывать надо исключительно через функцию strstr
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2014, 18:07 #7
Цитата Сообщение от trans967 Посмотреть сообщение
#include <regex>
у меня на этой строке ошибку выдаёт.
нельзя включить такой файл.
Ах да, забыл.
Реализовывать надо исключительно через функцию strstr
У тебя наверно стандарт 2011 не поддерживается, нет через эти функции тяжело реализовывать.
0
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 186
06.01.2014, 18:55  [ТС] #8
тяжело,но нужно именно через них.
я же написал код,там чуть-чуть изменить просто надо
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2014, 19:00 #9
trans967, Не старичок у тебя код большой и тяжелый для понимания от тебе рв для нахождения однострочного комментария "/\\*.*|//.*". Неохота в циклы вникать когда есть такая штука как <regex>
0
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 186
06.01.2014, 19:02  [ТС] #10
ну я же тоже не просто так пишу,что должна быть именно эта функция
должна 100% быть именно эта функция
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2014, 19:07 #11
Цитата Сообщение от trans967 Посмотреть сообщение
ну я же тоже не просто так пишу,что должна быть именно эта функция
должна 100% быть именно эта функция
да ясно жди студень, бог поможет!
0
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 186
06.01.2014, 19:26  [ТС] #12
буду надеятся,что кто-нибудь из людей поможет
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2014, 19:42 #13
Цитата Сообщение от trans967 Посмотреть сообщение
буду надеятся,что кто-нибудь из людей поможет
Ну старичок измени прогу сам, что тебе неясного как делать? Если ты первую часть сам делал, то что тебе сложно сделать проверку для многострочного коммента?
Что у тебя концом для однострочного комента является? я думаю символ конца строки '\n'
Для многострочного что будет концом? Два символа "*/"
Ну находи символ * и следом за ним проверяй сразу же символ '/' Если его находишь, то это комментарий.

Я вообще смотрю на твой код ты что там в нем находишь и что ты считаешь однострочным комментарием этот символ "/* комментарий */" ? Так это многострочный комментарий , однострочный это "//комментарий".
0
trans967
6 / 2 / 1
Регистрация: 23.04.2013
Сообщений: 186
06.01.2014, 19:49  [ТС] #14
как мне объяснили, односрочный - с 1 /, многострочный - с 2/
код мне помогали делать, естественно.
если бы я сам делал весь код - я бы не задавал тут этот вопрос
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.01.2014, 19:51 #15
Цитата Сообщение от trans967 Посмотреть сообщение
как мне объяснили, односрочный - с 1 /, многострочный - с 2/
код мне помогали делать, естественно.
если бы я сам делал весь код - я бы не задавал тут этот вопрос
А теперь я тебе объясню "школупень"!
Однострочный начинается с "//" и заканчивается концом строки символом "/n"
Многострочный начинается с "/*" и заканчивается символом "*/"

Так что заново переделывай!
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 19:51
Привет! Вот еще темы с ответами:

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

Удаление из текста программы комментариев с использованием списков - C++
Здравствуйте, уважаемые программисты! Я в С++ только недавно, в программировании совсем ничего еще не смыслю, поэтому обращаюсь к Вам за...

Проверить правильность расстановки символов “/*” и “*/” для комментариев - C++
Проверить правильность расстановки символов “/*” и “*/” для комментариев в фрагменте программы на языке С++.

Си++, помещение комментариев из кода страницы в отдельный файл - C++
Добрый вечер! Мне необходимо комментарии из кода программы поместить в отдельный файл. Программа работает, но не совсем правильно. Вместе с...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
06.01.2014, 19:51
Ответ Создать тему
Опции темы

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