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

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

Войти
Регистрация
Восстановить пароль
 
applebee
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 20
#1

Работа со строками. Написать grep - C++

11.01.2015, 02:44. Просмотров 384. Ответов 3
Метки нет (Все метки)

Хочу написать программу, которая облегчила бы работу, а именно, есть *.txt файл, в котором информация, и из нее нужно достать только нужное и положить в другой файл.
Так вот, для начала хочу в консольке все сделать
Ну и все остановилось на просто выводе некой информации, которая находится в ковычках (Char(34)) это символ ".
Не могу адекватные циклы написать, думаю смысл понятен и прост
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
#include<iostream>
#include<string.h>
#define x char(34)
using namespace std;
/*void poisk()
{
 
}*/
void main()
{
    setlocale(LC_ALL, "RUSSIAN");
    char str[999];
    char s[1]={x};
    int len,i=0,n1,n2;
    n1 = n2 =0;
    cout << "Введите строку: ";
    cin >> str;
    len = strlen(str);
    cout << len << endl;
    while (n1 != n2)
    {
        char s3 = str[i];
        if (s3 == x)
        {
            cout << "Результат: " << str[i] << endl;
            cout << "Номер элемента: " << i << endl;
            n1 = i;
            if (n1 == i)
            {
                while (n2 != i)
                {
                    char s4 = str[i++];
                    if (s4 == 3)
                        n2 = i;
                }
            }
        }
        i++;
 
    }
    cout << "n1:" << n1 << "\nn2:" << n2<<endl;
    //n1++;
    //while (n1>=n2)
    for (n1; n2; n1++)
    {
        cout << "Между ковычками: " << str[n1];
        //n1++;
        //копирование между ковычками
    }
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2015, 02:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа со строками. Написать grep (C++):

Написать программу: работа с си строками, функции strlen, strcpy - C++
С помощью данного алгоритма нужно вставить слово в конец и начало строки. С помощью strlen() узнать длину строки и длину слова, после...

Работа со строками - C++
#include &quot;Stdafx.h&quot; #include &quot;conio.h&quot; using namespace std; int main(){ const char* a = {&quot;000&quot;,&quot;111&quot;,&quot;222&quot;,&quot;333&quot;}; const char b...

Работа со строками C++ - C++
Задание: Запросить у пользователя массив из 10 строк и вывести на экран те, которые равны слову «Ура». #include &quot;stdafx.h&quot; #include...

Работа со строками - C++
Подсчитать количество вхождений слова «мама» в строку и вывести номера первых позиций этих вхождений. Если этого слова в строке нет, то...

Работа со строками - C++
Дана строка, содержащая полное имя файла. Выделить из этой строки название последнего каталога (без символов «\»). Если файл содержится в...

Работа со строками - C++
Вставить после вхождения строки str подстроку str1. Попытался сам сделать, но дальше этого работа не идёт. Нужна помощь. #include...

3
Renji
2113 / 1472 / 346
Регистрация: 05.06.2014
Сообщений: 4,265
11.01.2015, 10:09 #2
Не могу адекватные циклы написать, думаю смысл понятен и прост
Лично от меня смысл вашей писанины ускользает. Вот зачем, например, нужен массив на один символ (char s[1])?
C++
1
2
3
4
5
6
char str[1024];
cin>>str;
char*begin;
for(begin=str;*begin&&*begin!='"';++begin);
for(++begin;*begin&&*begin!='"';++begin)
    cout<<*begin;
0
zss
Модератор
Эксперт С++
6879 / 6441 / 2155
Регистрация: 18.12.2011
Сообщений: 16,930
Завершенные тесты: 1
11.01.2015, 11:13 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
int main()
{   
  string s="aaaaaaaaaa\"qwerty\"bbbbbbbb";
  string::iterator f1=find(s.begin(),s.end(),'\"'); // ищем первую кавычку
  string::iterator f2=find(f1+1,s.end(),'\"'); // ищем вторую кавычку
  ostream_iterator<char> out(cout, ""); // итератор вывода текста на экран 
  copy(f1+1,f2, out); cout << endl; // выводим участок от f1+1 до f2
  system("PAUSE");
  return 0;
}
Кстати, обобщенные алгоритмы работают и с обычными массивами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{   
  char s[]="aaaaaaaaaa\"qwerty\"bbbbbbbb";
  int L=strlen(s);
  char* f1=find(s,s+L,'\"'); // ищем первую кавычку
  char* f2=find(f1+1,s+L,'\"'); // ищем вторую кавычку
  ostream_iterator<char> out(cout, ""); // итератор вывода текста на экран 
  copy(f1+1,f2, out); cout << endl; // выводим участок от f1+1 до f2
  system("PAUSE");
  return 0;
}
0
gazlan
3135 / 1911 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
11.01.2015, 11:26 #4
Цитата Сообщение от applebee Посмотреть сообщение
достать только нужное и положить в другой файл
grep, называется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2015, 11:26
Привет! Вот еще темы с ответами:

Работа со строками - C++
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных (маленьких) латинских букв; между соседними...

Работа со строками - C++
Дан текст.Выделить все слова,которые не содержат одинаковых символов.Различие строчных и прописных букв во внимание не принимать. ...

Работа со строками в СИ++ - C++
Парни помагите напишите прогу если не втягость заранее благодарю))) Вот условие: Дана строка. Преобразовать ее, удалив каждый символ *...

Работа со строками. - C++
Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается...


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

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

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