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

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

Войти
Регистрация
Восстановить пароль
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

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

21.11.2013, 08:27. Просмотров 352. Ответов 8
Метки нет (Все метки)

пытаюсь удалить комментарии - не выходит
глючит нахождение "\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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 08:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти символ перехода строки (C++):

Найти символ первой строки, который первым не совпал с одним из символов второй строки. Вывести слово, в которое входит этот символ - C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой строки, который первым не совпал с...

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» - C++
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в...

Каждый символ строки заменить на следующий за ним, а последний символ строки заменяеть первым - C++
я написал код но не могу разобраться. вот дано : ---------------------------------------------------------- В текстовом файле fin.txt...

Символ перехода на новую строку в калькуляторе Страуструпа - C++
Выполняю задание в книге "Программирование Принципы и практика с использованием с++" В главе 7 есть задание сделать так чтоб пр нажатии...

Найти символ строки - C++
Помогите пожалуйста выполнить задание :cry: В С++ требуется Найти символ строки который встречается в строке только один раз. То...

Найти встроке первый символ, равный одному из символов другой строки - C++
const char* my_strpbrk(const char* str, const char* chars); char* my_strpbrk( char* str, const char* chars); Найти в...

8
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
21.11.2013, 08:57 #2
\n\r не пробовали на всякий случай?
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 09:14  [ТС] #3
Цитата Сообщение от AntonChik Посмотреть сообщение
\n\r не пробовали на всякий случай?
честно говоря не зная, что такое \n\r попробывал - не подходит
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.11.2013, 09:27 #4

Не по теме:

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



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

Добавлено через 5 минут
ОС Windows? В студии проверил, нормально '\n' находится.
0
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*/")
0
Миниатюры
Найти символ перехода строки  
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
21.11.2013, 09:37  [ТС] #6
Цитата Сообщение от alsav22 Посмотреть сообщение
ОС Windows?
да, семерка, ide codeblocks
0
alsav22
5421 / 4816 / 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;
}
1
Миниатюры
Найти символ перехода строки  
Ilot
Модератор
Эксперт С++
1820 / 1178 / 232
Регистрация: 16.05.2013
Сообщений: 3,115
Записей в блоге: 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
1
Миниатюры
Найти символ перехода строки  
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 оповещения делать))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2013, 11:03
Привет! Вот еще темы с ответами:

Создать функцию, которая на вход получает строку символов и один символ, функция печатает те слова строки, в которых встречается этот символ. - C++
Здраствуйте, вы не могли б мне помоч, у меня проблема з задачей, в коде постоянно выдаёт ошыбки на мове С, , и это еще перевести в...

Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки) - C++
состоит из слов, разделенных одним или несколькими пробелами. Найти слово, один и тот же символ в котором встречается максимальное число...

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

(Ошибка)Находим первый символ строки 1,который не совпадает ни с одним символом из строки 2 - C++
Данный кусок программы не выполняет должной функции.Вроде бы всё правильно, но вместо символа &quot;b&quot; выдаёт символ &quot;i&quot;.подскажите где ошибка. ...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
21.11.2013, 11:03
Ответ Создать тему
Опции темы

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