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

найти символ перехода строки - C++

Восстановить пароль Регистрация
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 08:27     найти символ перехода строки #1
пытаюсь удалить комментарии - не выходит
глючит нахождение "\n" Help!!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string deleteComments(string str)
{
    unsigned lenght = str.length();
    unsigned pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
int w=0x0A;
 
    while (  pos1 != string::npos &&  pos3 != string::npos )
    {
        pos1 = str.find("/*");
        pos2 = str.find("*/");
        if (pos1 != string::npos && pos2 != string::npos)
            str.erase( pos1, pos2+2 );
 
        pos3 = str.find("//");
        pos4 = str.find( "\n", pos3);
        if (pos3 != string::npos && pos4 != string::npos)
            str.erase( pos3, pos4 );
    }
 
return str;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 08:27     найти символ перехода строки
Посмотрите здесь:

Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки) C++
Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки). C++
C++ Найти символ строки
Создать функцию, которая на вход получает строку символов и один символ, функция печатает те слова строки, в которых встречается этот символ. C++
Найти символ первой строки, который первым не совпал с одним из символов второй строки. Вывести слово, в которое входит этот символ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
21.11.2013, 08:57     найти символ перехода строки #2
\n\r не пробовали на всякий случай?
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 09:14  [ТС]     найти символ перехода строки #3
Цитата Сообщение от AntonChik Посмотреть сообщение
\n\r не пробовали на всякий случай?
честно говоря не зная, что такое \n\r попробывал - не подходит
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2013, 09:27     найти символ перехода строки #4

Не по теме:

Цитата Сообщение от AntonChik Посмотреть сообщение
\n\r не пробовали на всякий случай?
\r\n



Добавлено через 7 минут
Цитата Сообщение от soican Посмотреть сообщение
глючит нахождение "\n"
Как это выглядит?

Добавлено через 5 минут
ОС Windows? В студии проверил, нормально '\n' находится.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 09:34  [ТС]     найти символ перехода строки #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Как это выглядит?
вот вся прога
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
string textToString( string fileName );
string deleteComments(string sourceCodeNameFile);
 
int main( int argc, char* argv[] )
{
    if ( argc > 3)
      cout << "Maximum number of parametrs is 2" << endl;
    else
    {
      string sourceCodeFileName;
 
      if ( argc == 1)
      {
      cout << "Type file with source code" <<endl;
      cin >> sourceCodeFileName;
      }
      else if ( argc == 2)
        sourceCodeFileName = argv[1];
      else if ( argc == 3)
      {
       sourceCodeFileName = argv[1];
       freopen(argv[2], "w", stdout);
      }
      cout << deleteComments( textToString( sourceCodeFileName ) );
    }
 
return 0;
}
 
string textToString( string fileName )
{
    ifstream inputFile;
    inputFile.open(fileName);
    string out;
    if ( inputFile.is_open() )
    {
     string str ( (istreambuf_iterator<char>( inputFile )),
                   istreambuf_iterator<char>() );  //про лишние скобки demin.ws/blog/russian/2009/02/09/dark-corners-of-cpp/
     out = str;
    }
return out;
}
 
string deleteComments(string sourceCode)
{
    unsigned pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
 
    while (  pos1 != string::npos ||  pos3 != string::npos )
    {
        pos1 = sourceCode.find("/*");
        pos2 = sourceCode.find("*/");
        if (pos1 != string::npos && pos2 != string::npos)
            sourceCode.erase( pos1, pos2+2 );
 
        pos3 = sourceCode.find("//");
        pos4 = sourceCode.find( "\n", pos3);
        if (pos3 != string::npos && pos4 != string::npos)
            sourceCode.erase( pos3, pos4 );
    }
return sourceCode;
}
вот ввожу на вход тектовик
/*упенкепкп
авпывпывап
ваыпывапавп.*/

#include <iostream>// ttyg
#include <fstream>// hbg
#include <string>// dggb

using namespace std;
find("/*укакукука refrferf*/")
Миниатюры
найти символ перехода строки  
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 09:37  [ТС]     найти символ перехода строки #6
Цитата Сообщение от alsav22 Посмотреть сообщение
ОС Windows?
да, семерка, ide codeblocks
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2013, 10:11     найти символ перехода строки #7
erase() неправильно используете. Если первый параметр индекс, то второй параметр количество удаляемых символов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string deleteComments(string sourceCode)
{
    
    unsigned pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
 
    while (  pos1 != string::npos ||  pos3 != string::npos )
    {
        pos1 = sourceCode.find("/*");
        pos2 = sourceCode.find("*/");
        if (pos1 != string::npos && pos2 != string::npos)
            sourceCode.erase( pos1, pos2 - pos1 + 2 );
        
        pos3 = sourceCode.find("//");
        pos4 = sourceCode.find( "\n", pos3);
        if (pos3 != string::npos && pos4 != string::npos)
            sourceCode.erase( pos3, pos4 - pos3 );
        
    }
    return sourceCode;
}
Миниатюры
найти символ перехода строки  
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
21.11.2013, 11:01     найти символ перехода строки #8
C++
1
    unsigned pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
Джосъютис по этому поводу пишет следущее:
C++
1
std::string::size_type pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
Подробности там же стр. 478
Миниатюры
найти символ перехода строки  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2013, 11:03     найти символ перехода строки
Еще ссылки по теме:

Разработать алгоритм и программу для разбиения текста на строки (как признак конца строки в тексте использовать символ @) C++
Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" C++
Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» C++

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

Или воспользуйтесь поиском по форуму:
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 11:03  [ТС]     найти символ перехода строки #9
понял, надо было так
C++
1
2
3
4
pos3 = sourceCode.find("//");
        pos4 = sourceCode.find( "\n", pos3);
        if (pos3 != string::npos && pos4 != string::npos)
            sourceCode.erase( sourceCode.begin()+pos3, sourceCode.begin()+pos4 );
Добавлено через 1 минуту
ух ты, оказывается мне ответили уже, надо cyberforumu оповещения делать))
Yandex
Объявления
21.11.2013, 11:03     найти символ перехода строки
Ответ Создать тему
Опции темы

Текущее время: 12:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru