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

Работа со строками, поиск, запись - C++

Восстановить пароль Регистрация
 
FireUnix
18 / 18 / 6
Регистрация: 04.03.2013
Сообщений: 141
16.06.2013, 20:11     Работа со строками, поиск, запись #1
Дорогие друзья, пишу программу. При написании возникли проблемы, а точнее столь слабые познания в с++.
Имеем .xml файл вида:
XML
1
2
3
4
5
6
7
    
    <Cell><Data ss:Type="String">элемент 1001</Data></Cell>
    <Cell><Data ss:Type="String">элемент 100111</Data></Cell>
    <Cell><Data ss:Type="String">элемент 10012</Data></Cell>
    <Cell><Data ss:Type="String">элемент 1001411</Data></Cell>
    <Cell><Data ss:Type="String">элемент 10011</Data></Cell>
    <Cell><Data ss:Type="String">элемент 1001221</Data></Cell>
После некоторых попыток я разобрался с getline, теперь в переменную считываются строки вместе с пробелами.
Вот сама задача: Как только в строке находится слово "Элемент", в массив должно считаться значение элемента, а именно "1001", и так со всего файла.
Пробовал через find, но так как плохо разобрался ничего дельного не вышло, так же пытался работать с char массивом, то есть поэлементно сверял и клал в переменную, но так как размер значения можеть быть любым, мой алгоритм был слишком хрупким, и часто вылетал. Может у кого нибудь есть мысли по этому поводу?

Добавлено через 3 часа 55 минут
Вправду никто не знает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2013, 20:11     Работа со строками, поиск, запись
Посмотрите здесь:

C++ Работа со строками C++
C++ Работа со строками.
C++ Работа со строками
Работа со строками C++
C++ Работа со строками,поиск предложений.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
16.06.2013, 21:36     Работа со строками, поиск, запись #2
C++
1
2
3
4
5
6
7
8
string GetBetween(string target, string left, string right)
{
    size_t begin = target.find(left);
    size_t end = target.find(right, begin+left.size());
    if(begin==string::npos || end==string::npos) return "";
    begin += left.size();
    return target.substr(begin, end - begin);
}
либо регулярками...)
FireUnix
18 / 18 / 6
Регистрация: 04.03.2013
Сообщений: 141
16.06.2013, 22:01  [ТС]     Работа со строками, поиск, запись #3
Оххх, загнул))) Буду разбираться в твоем примере((( Спасибо, хоть направил в сторону...
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
16.06.2013, 22:09     Работа со строками, поиск, запись #4
Цитата Сообщение от FireUnix Посмотреть сообщение
Оххх, загнул))) Буду разбираться в твоем примере((( Спасибо, хоть направил в сторону...
ну я думаю понятно, что вытаскивает содержимое между двух строк...)
пример использования...)
C++
1
2
getline(file,line);
string element = GetBetween(line, "<Cell><Data ss:Type=\"String\">элемент ", "</Data></Cell>")
FireUnix
18 / 18 / 6
Регистрация: 04.03.2013
Сообщений: 141
16.06.2013, 22:12  [ТС]     Работа со строками, поиск, запись #5
Да да, большое спасибо, выручил)))
Yandex
Объявления
16.06.2013, 22:12     Работа со строками, поиск, запись
Ответ Создать тему
Опции темы

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