Поиск:

Ответ в темуСоздание новой темы Создание опроса
> qstring::mid 
:(
    Опции темы
implements
Дата 5.10.2011, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



хочу вытащить подстроку из строки с определенного символа

к примеру вот строка

Message-ID: <CAH6xET-OmD0SPZJWgJ8fZ+MDTFMi7LfSdPiZHgrqqxZLzSsWyQ
Subject: tema pisma
From: =?KOI8-R?B?5M3J1NLJyiDtwcvB0s/X?= <[email protected]>
To: [email protected]
как скопировать тему письма, строку после Subject: ? надо найти первое вхождение перевода строки после Subject: ? и все что между ними скопировать, подскажите как это сделать по лучше

Это сообщение отредактировал(а) implements - 5.10.2011, 06:08
PM MAIL   Вверх
Snake174
Дата 5.10.2011, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну как-то так, наверно. Кривовато конечно.
Код

QString str = "Message-ID: <CAH6xET-OmD0SPZJWgJ8fZ+MDTFMi7LfSdPiZHgrqqxZLzSsWyQ \
      Subject: tema pisma \
      From: =?KOI8-R?B?5M3J1NLJyiDtwcvB0s/X?= <[email protected]> \
      To: [email protected]";

int begin = str.indexOf("Subject:");
int ends = str.indexOf("From:");

QString sss = str.mid( begin + 9, ends - (begin + 9) );
sss = sss.trimmed();
qDebug("STR: %s", sss.toAscii().data());

PM MAIL   Вверх
implements
Дата 5.10.2011, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Snake174,  да кстати не совсем пойдет(это строка ответ от pop3 сервера),стречается выше X-Envelope-From, и просто в теме письма может ыь From, тут что то другое надо
PM MAIL   Вверх
Snake174
Дата 5.10.2011, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну тогда итераторами попробуй:
Код

QString::ConstIterator itEnds  = str.constEnd();

for (QString::ConstIterator it = str.constBegin(); it != itEnds; ++it)
{
  if (*it == '\n' || *it == '\r')
  {
  }
}


Что-то в этом роде.

Инет что-то глючит.

Это сообщение отредактировал(а) Snake174 - 5.10.2011, 07:06
PM MAIL   Вверх
implements
Дата 5.10.2011, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Snake174, не совсем понял, чем мне это поможет
PM MAIL   Вверх
Snake174
Дата 5.10.2011, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как ты и писал ранее искать вхождение перевода строк. Между первым и вторым будет твоя тема.
PM MAIL   Вверх
implements
Дата 5.10.2011, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Snake174, я имел в виду пример с итераторами не понятен мне.
мне нужно найти From именно после Subject а не первый в строке

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


Новичок



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

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



Делай тогда без итератора. Допустим, ты знаешь позицию, в которой находится Subject (pos1). Тогда:
Код

for (int i = pos1;; ++i)
{
  if (str.at(i) == '\n' || str.at(i) == '\r')
  {
    Тема = str.mid( pos1, i - pos1 );
    break;
  }
}


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


Бывалый
*


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

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



ок спс

Добавлено через 11 минут и 12 секунд
с темой понятно, а вот как все письмо распарсить полученное с pop3 уж затруднительно, много всего есть там, может есть примеры парсинга?
PM MAIL   Вверх
Amp
Дата 5.10.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Разобрать письмо несложно. Затруднения там могут возникнуть только во вложенных друг в друга multipart-ах. Гугли по "c++ mime parser"

Кстати значение поля не обязательно будет находиться на одной строке с его именем. Например:
Код

Message-ID: <CAH4aHvT3+HRykT8Ywpj9tGqYn3bT3dRHYev0dbePc8JuaW0MyA@mail.gmail.com>
Subject: SOLVED: [opensuse] Connection refused on RDP connection to headless
 VirtualBox VM

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




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


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

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