2016-01-16 4 views
-1

Я работаю в Qt Creator (Community) 5.5.1. Например, у меняQString - разбор QString с геоинформацией

строку = "44 ° 36' 14.2 \" N, 33 ° 30' 58.6 \ " E, 0м"

из QString. Я знаю, что я должен разобрать это, но я не знаю, как, потому что я никогда не сталкивался с такой проблемой. С нашей строки я хочу, чтобы получить некоторые другие меньшие строки:

ВКТ = «44»; cmt = "36"; сСт = "14,2"

CGG = "33"; cmg = "30"; CSG = «58,6»

Что я должен сделать для работы моей программки, как я сказал?
Мне нужен настоящий код. Благодарю.

+0

Уверен, что я уже видел этот вопрос здесь, попробуйте функцию поиска. На этот раз я помогу: поиск «C++ String Parsing» –

+0

О, спасибо, я «не знал». я нашел много информации, но я не нашел, как вырезать строки между двумя символами. – Khan

+1

@Khan QStringList list = string.split (QRegExp ("[^ 0-9.]"), QString :: SkipEmptyParts); – Devopia

ответ

0

«Мне нужен код» - это не тот вопрос, который вы должны задавать, так что о «gimme knowledge» не о вопросах «сделайте мою работу». Хороший вопрос должен продемонстрировать ваши усилия по решению проблемы, чтобы люди могли рассказать вам, что вы делаете неправильно. Мало того, что ваш вопрос не имеет таких усилий, но вы не расходовали его, даже когда Devopia выполнила половину работы за вас. Имейте это в виду для ваших будущих вопросов.

struct G { 
    double cgt, cmt, cst, cgg, cmg, csg; 
}; 

G parse(QString s) { 
    QStringList list = s.split(QRegExp("[^0-9.]"), QString::SkipEmptyParts); 
    G g; 
    g.cgt = list.at(0).toDouble(); 
    g.cmt = list.at(1).toDouble(); 
    g.cst = list.at(2).toDouble(); 
    g.cgg = list.at(3).toDouble(); 
    g.cmg = list.at(4).toDouble(); 
    g.csg = list.at(5).toDouble(); 
    return g; 
} 
+0

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

+0

большое вам спасибо! – Khan

1

Самый простой способ начать - string.split(' ') - это даст список компонентов строки, разделенных символом пробега (' '). Если вы уверены, что строка всегда будет отформатирована точно так же, вы можете сначала удалить все специальные символы (° и т. Д.).

Затем проанализируйте полученный результат QStringList. Опять же, если формат исправлен, вы можете проверить, что количество элементов списка соответствует ожидаемому числу, а затем получить градусы как list[0], минуты как `` list [1] `и т. Д.

Другим вариантом является использование QRegExp для синтаксического анализа строки (разбиение ее на подстроки на основе регулярного выражения), но я считаю это слишком сложным для случаев использования, где split работает так же хорошо.

+0

Я знаю, я нашел cgt = "44", но что futrher, я не знаю. Мне нужен код. :( – Khan

Смежные вопросы