Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конец строки, что-то не идет... 
V
    Опции темы
Killer_13
  Дата 11.10.2010, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Здравствуйте.
Есть у меня огромная строка из нее нужно выбрать определенные слова, с этим вроде все в порядке. smile

Но у меня идет циклом, так что выводится столько раз, сколько символов в строке около 2000 строк.
Тоисть та информация что я выдираю из строки повторяется много раз.

Нужно определить, что найден последний элемент в строке и прекратить писать в файл.

например pos2=2005 , а длина строки 2015, и pos2 который на 2005 позиции последний искомый элемент, если это так, то нужно прекратить поиск в строке

Нашел похожую тему, но че-т с getline не получилось: http://forum.vingrad.ru/topic-211976.html

вот функция:
Код

void teilString(string& str){

    int pos1,pos2,grenz=str.length();
    string teil;

    pos2 = str.find("</");
    pos1 = str.rfind(">",pos2);

    aus<<teil.assign(str,pos1+1,pos2-pos1-1)<<"\n";

    for (int i=0;i<str.length();i++){
        pos2 = str.find("</",pos2+1);
        pos1 = str.rfind(">",pos2-1);
        aus<<teil.assign(str,pos1+1,pos2-pos1-1)<<"\n";
        }
}


Код

ofstream aus;


Спасибо.
PM MAIL   Вверх
bsa
Дата 11.10.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



используй break.... Больше ничего посоветовать не могу, так как текст слишком сумбурен и непонятен.
PM   Вверх
Killer_13
Дата 11.10.2010, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Вот такая вот строка.
Цитата

<OOP_Praktikum><Anmeldung><Nachname>Wuebbelmann</Nachname><Vorname>Juergen</Vorname><Email>[email protected]</Email><Matrikelnummer>012345</Matrikelnummer><Studienrichtung>TI</Studienrichtung><Semester>3</Semester><G1Name>Meier</G1Name><G1Vorname>Hugo</G1Vorname><Anmerkung></Anmerkung></Anmeldung><Anmeldung><Nachname>Duck</Nachname><Vorname>Donald</Vorname><Email>[email protected]</Email><Matrikelnummer>000001</Matrikelnummer><Studienrichtung>Enterei</Studienrichtung><Semester>30</Semester><G1Name>Duck</G1Name><G1Vorname>Daisy</G1Vorname><Anmerkung>ImmernochmitDaisy</Anmerkung></Anmeldung><Anmeldung><Nachname>Gans</Nachname><Vorname>Gustav</Vorname><Email>[email protected]</Email><Matrikelnummer>999999</Matrikelnummer><Studienrichtung>GansheitlichesBraten</Studienrichtung><Semester>9+</Semester><G1Name>Duck</G1Name><G1Vorname>Donald</G1Vorname><Anmerkung></Anmerkung></Anmeldung><Anmeldung><Nachname>Duck</Nachname><Vorname>Daisy</Vorname><Email>[email protected]</Email><Matrikelnummer>000002</Matrikelnummer><Studienrichtung>Enterei</Studienrichtung><Semester>9+</Semester><G1Name>Duck</G1Name><G1Vorname>Donald</G1Vorname><Anmerkung>WiedermitDonald</Anmerkung></Anmeldung><Anmeldung><Nachname>Gans</Nachname><Vorname>Gustav</Vorname><Email>[email protected]</Email><Matrikelnummer>999999</Matrikelnummer><Studienrichtung>GansheitlichesBraten</Studienrichtung><Semester>9+</Semester><G1Name></G1Name><G1Vorname></G1Vorname><Anmerkung>NichtmitDonald!WennsseinmussmitMickey.</Anmerkung></Anmeldung><Anmeldung><Nachname>Wuebbelmann</Nachname><Vorname>Juergen</Vorname><Email>[email protected]</Email><Matrikelnummer>012345</Matrikelnummer><Studienrichtung>TI</Studienrichtung><Semester>3</Semester><G1Name>Meier</G1Name><G1Vorname>Hugo</G1Vorname><Anmerkung>WasistOOP?</Anmerkung></Anmeldung><Anmeldung><Nachname>Paulsen</Nachname><Vorname>Paul</Vorname><Email>[email protected]</Email><Matrikelnummer>0815</Matrikelnummer><Studienrichtung>TI</Studienrichtung><Semester>3</Semester><G1Name>Meier</G1Name><G1Vorname>Hugo</G1Vorname><Anmerkung>WasistOOP?</Anmerkung></Anmeldung></OOP_Praktikum>



Модератор: сделал сообщение более читабельным

Это сообщение отредактировал(а) bsa - 11.10.2010, 19:43
PM MAIL   Вверх
bsa
Дата 11.10.2010, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Killer_13, я очень рад за тебя. А дальше что? Ну строка. Хорошо. очень похоже на XML.
Ты по-русски расскажи, что ты хочешь получить.
PM   Вверх
Killer_13
Дата 11.10.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Да, был xml, теперь забил все в одну строку и нужно достать инфу из тэгов.

Wuebbelmann
Juergen

и так д... smile
мой код получает такое только повторяет все 2000 с чем то раз, а мне не нужно повторения, поэтому хочу узнать как смотреть конц строки.
PM MAIL   Вверх
djamshud
Дата 12.10.2010, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



У вас цикл бестолковый. Делайте
Код

while((pos2=...)!=-1||(pos1=...)!=-1)
get_substring


Добавлено @ 10:27
Вместо -1 более кошерно использовать std::string::npos.

Это сообщение отредактировал(а) djamshud - 12.10.2010, 10:53


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
xvr
Дата 12.10.2010, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Чем не устраивают готовые НОРМАЛЬНЫЕ xml парсеры (имя коим легион)?

PM MAIL   Вверх
Killer_13
Дата 12.10.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Дык ненаю я нормальных парсеров, просто задачку нуно написать.
djamshud
Пасиб, попробую сегодня.
PM MAIL   Вверх
djamshud
Дата 12.10.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Killer_13http://xmlsoft.org/


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
W4FhLF
Дата 12.10.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Я бы посоветовал: http://code.google.com/p/pugixml/


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Killer_13
Дата 12.10.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Хммм, опять чо-то странное..
Чуток переделал функцию.

Вот так
Код

void teilString(string& str){

    int pos1,pos2;
    string teil;

    pos2 = str.find("</");
    pos1 = str.rfind(">",pos2);
    aus<<teil.assign(str,pos1+1,pos2-pos1-1)<<"\n";
 
    while((pos2 != string::npos) || (pos1 != string::npos)){
        pos2 = str.find("</",pos2+1);
        pos1 = str.rfind(">",pos2);
        aus<<teil.assign(str,pos1+1,pos2-pos1-1)<<"\n";
    }
}


Но здесь происходит зацыкливание! Не понямаю почему!!!
Протестировал дебаггером раза три, так вот доходит строка до конца. pos2=-1 а потом цыкл проверяет и пускает это значение дальше. Не могу понять?? Не должен же!
вместо string::npos пробовал ставить -1 результат такой же.

Уважаемые, мне не нужно серьезно вникать в с++ пока, мне нужно написать 1 задачу.
Спасибо.

Это сообщение отредактировал(а) Killer_13 - 12.10.2010, 22:14
PM MAIL   Вверх
Crafty
Дата 12.10.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



В условии цикла || на && замените.
PM MAIL   Вверх
Killer_13
Дата 12.10.2010, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Йомайо, так и хотел попробовать, но почему то руки не дотянулись, в голове произошла мысль, что должно работать и с "или" почему же не работало с или, можете обьяснить в двух словах. Должно было работать, тоисть условие срабатывало, если хотя бы одно из значений "-1" = почему не срабатывало?

Спасибо!
PM MAIL   Вверх
Killer_13
Дата 12.10.2010, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: 1
Всего: 1



Вах, откуда на таком хорошем форуме спам полез, и не стыдно господам спамерам... :(
PM MAIL   Вверх
djamshud
Дата 12.10.2010, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Killer_13, это я дурак. Сначала поставил &&, потом подумал и исправил на ||, решив, что лучше проверить сразу обе позиции на -1. && говорит, что достаточно найти один конец: true && false = false.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1087 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.