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

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

Войти
Регистрация
Восстановить пароль
 
Mesteriis
373 / 156 / 40
Регистрация: 08.08.2015
Сообщений: 1,109
Завершенные тесты: 1
#1

Парсинг строки - C++

14.11.2015, 18:24. Просмотров 312. Ответов 4
Метки нет (Все метки)

Доброе время суток!

столкнулся с такой проблемой что странно отрекаются данные из строки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool LoadTypeFiles()
{
    arrTypeFiles.clear();
    std::string filename = "_TypeFiles";
    std::ifstream inFile (filename); //создать поток
    if (!inFile.is_open()) return false;//проверить открыт ли файл
    std::string line;
    while (getline(inFile, line)) //прочитать строку
        {
        cout << line << endl;
        typef.Type       = line.substr(0, line.find(' ')); cout << typef.Type;
        typef.Name       = line.substr(typef.Type.size()+1, (typef.Type.size()+1)+line.find(' '));cout << " " << typef.Name;
        typef.GlobalType = line.substr(typef.Name.size()+1, (typef.Name.size()+1)+line.find(' '));cout << " " << typef.GlobalType;
        typef.Exclusion  = stoi(line.substr(line.find_last_of(' '), line.find(';')));cout << " " << typef.Exclusion<<endl;
        arrTypeFiles.push_back(typef);
        }
    inFile.close();
    return true;
}
вывод

Bash
1
2
3
4
avi Video Media 1; <- как прочитано
avi Video M o Media 1; 1 < - как записано
dmg Distrib Distrib_MAC 1;<- как прочитано
dmg Distrib rib Distrib 1 < - как записано
файл из которого читает
Bash
1
2
avi Video Media 1;
dmg Distrib Distrib_MAC 1;
почему так происходит даже не пойму(((
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2015, 18:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг строки (C++):

Парсинг строки - C++
Добрый день. Помогите с решением следующей задачи. На вход идет строка из 0 и 1, например, 110100011, нужно распарсить её на составляющие....

Парсинг строки С++ - C++
Ребят,нигде не нашел ничего дельного,прошу,чтобы натолкнули на мысль или объяснили что,да как. В общем на вход,к примеру,поступает строка...

Парсинг чисел из строки - C++
Подскажите пожалуйста функцию, которая моглабы парсить из строки. Ну что-то на подобии sscanf, только наоборот Чтобы получилось что то...

Парсинг строки с пробелами - C++
Вообщем на выходе всего я получаю вот это : Вот сам файл script.csx: script dadada по идеи должно написать:

Парсинг строки по пробелам - C++
Делаю консоль. Написал парсер команд: string command = {&quot;&quot;}; int i = 0; while(i &lt; 5){ command = &quot;&quot;; i++;} При этом команда по...

Быстрый парсинг строки - C++
Всем доброго времени суток... Прошу разъяснить что делаю не так. Получаю строку вида, нужно ее обработать с минимальными задержками, по...

4
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
14.11.2015, 20:13 #2
Цитата Сообщение от Mesteriis Посмотреть сообщение
(typef.Type.size()+1)+line.find(' ')
вот это проверь
0
Mesteriis
373 / 156 / 40
Регистрация: 08.08.2015
Сообщений: 1,109
Завершенные тесты: 1
14.11.2015, 20:17  [ТС] #3
Так ну путем медитирование, распития вредных напитков и глаженьем кошки по животу, определил, что line.find начинает поиск с начало строки, если в строке все элементы отделены одним и тем же символом то возвращяется позиция первого нашедшего, соответственно из этого вопрос как заставить эту собаку начать поиск с места где закончился предыдущий а не с начало строки?

Добавлено через 1 минуту
igorrr37, ну почему так происходит, я уже понял не знаю как это исправить!

Добавлено через 1 минуту
Единсвенное что приходит в голову это откусывать из строки уже найденный элемент, но что то мне подсказывает что это не совсем правильно!
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
14.11.2015, 20:20 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
line.find(' ', typef.Type.size() + 1) - (typef.Type.size() + 1)
замени на что то такое
1
Mesteriis
373 / 156 / 40
Регистрация: 08.08.2015
Сообщений: 1,109
Завершенные тесты: 1
14.11.2015, 20:48  [ТС] #5
igorrr37, Мерси

Добавлено через 21 минуту
Итого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool LoadTypeFiles()
{
    arrTypeFiles.clear();
    std::string filename = "_TypeFiles";
    std::ifstream inFile (filename); 
    if (!inFile.is_open()) return false;
    std::string line;
    while (getline(inFile, line)) 
        {
        cout << line << endl;
        int findDot=0;
        typef.Type       = line.substr(0, line.find(' ')); findDot=typef.Type.size()+1;
        typef.Name       = line.substr(findDot, line.find(' ', findDot) - findDot);findDot=findDot+typef.Name.size()+1;
        typef.GlobalType = line.substr(findDot, line.find(' ', findDot) - findDot);
        typef.Exclusion  = stof(line.substr(line.find_last_of(' '), line.find(';')));
        arrTypeFiles.push_back(typef);
        }
 
    inFile.close();
    return true;
}
Вдруг кому понадобится
0
14.11.2015, 20:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2015, 20:48
Привет! Вот еще темы с ответами:

Парсинг значений из командной строки - C++
Всем доброго времени суток, столкнулся с необходимостью получения значений из командной строки, не просто чисел, а разделенных '/'. ...

Парсинг опций командной строки - C++
Всем привет) Пишу приложение при помощи Qt. Хочу внедрить поддержку командной строки, чтобы можно было использовать программу как...

Парсинг строки: отобрать латинские символы - C++
после введения с клавиатуры произвольной строки вывести на экран эту строку,но с отобранными из него латинскими буквами. с++ Заранее...

Чтение юникодного файла и парсинг строки - C++
Не удается нормально считать файл. значения читаются с нуль пробелом, как их распарсить и сконвертировать в обычные типы данных?? вот...


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

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

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