crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как распарсить строку?
RazrFalcon
  опции профиля:
сообщение 28.5.2011, 19:35
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Есть QString. Туда копируется вывод консольной утилиты через QProcess. Мне нужно в этой длинной строке найти, в моем случае, частоту ЦП.
Как это реализовать?

В голову приходит только разбиение по словам, ака split(" "), а затем каждое слово в QStringList сравнивать на наличие GHz/MHz и тд. Но это будет долговато.

Можно через remove(); удалить все до частоты, и после, но это не очень точно, так как теоретически, значения до/после могут изменится.

Какой вариант самый оптимальный? Скорость работы критична.


PS: нужен аналог grep

Сообщение отредактировал RazrFalcon - 28.5.2011, 19:37
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 28.5.2011, 22:01
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Это я к примеру написал.

Суть в том, что в тексте есть <тут текст> 1.90GHz <тут текст>.
Мне нужно вычленить это значение. При том, что то, что до и то что после - мне известно, и оно постоянно.

Пример:
Раскрывающийся текст
$ cpufreq-info
cpufrequtils 008: cpufreq-info © Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: powernow-k8
CPUs which run at the same hardware frequency: 0 1
CPUs which need to have their frequency coordinated by software: 0 1
maximum transition latency: 109 us.
hardware limits: 800 MHz - 1.90 GHz
available frequency steps: 1.90 GHz, 1.80 GHz, 1.60 GHz, 800 MHz
available cpufreq governors: conservative, performance
current policy: frequency should be within 800 MHz and 1.90 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.90 GHz.
analyzing CPU 1:
driver: powernow-k8
CPUs which run at the same hardware frequency: 0 1
CPUs which need to have their frequency coordinated by software: 0 1
maximum transition latency: 109 us.
hardware limits: 800 MHz - 1.90 GHz
available frequency steps: 1.90 GHz, 1.80 GHz, 1.60 GHz, 800 MHz
available cpufreq governors: conservative, performance
current policy: frequency should be within 800 MHz and 1.90 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.90 GHz.

Отсюда нужно выдрать частоту:
current CPU frequency is 1.90 GHz.

Пока что только так работает:
qDebug()<<infoStr.remove(QRegExp(".*frequency is ")).remove(QRegExp(" \\..*")).remove(QRegExp("\\.\\s+.*"));

На счет скорости не знаю. Интересует более красивое/рациональное решение.

Сообщение отредактировал RazrFalcon - 28.5.2011, 23:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 5:29