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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
vankleef
  опции профиля:
сообщение 29.5.2011, 1:35
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 21.10.2010
Пользователь №: 2134

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




Репутация:   1  


извиняюсь за "на скорую руку", поздно, голова еле варит)

QString str("cpufrequtils 008: cpufreq-info © Dominik Brodowski 2004-2009\nReport errors and bugs to cpufreq@vger.kernel.org, please.\nanalyzing CPU 0:\n driver: powernow-k8\n CPUs which run at the same hardware frequency: 0 1\n CPUs which need to have their frequency coordinated by software: 0 1\n maximum transition latency: 109 us.\n hardware limits: 800 MHz - 1.90 GHz\n available frequency steps: 1.90 GHz, 1.80 GHz, 1.60 GHz, 800 MHz\n available cpufreq governors: conservative, performance\n current policy: frequency should be within 800 MHz and 1.90 GHz.\n The governor performance may decide which speed to use\n within this range.\n current CPU frequency is 1.90 GHz.\nanalyzing CPU 1:\n driver: powernow-k8\n CPUs which run at the same hardware frequency: 0 1\n CPUs which need to have their frequency coordinated by software: 0 1\n maximum transition latency: 109 us.\n hardware limits: 800 MHz - 1.90 GHz\n available frequency steps: 1.90 GHz, 1.80 GHz, 1.60 GHz, 800 MHz\n available cpufreq governors: conservative, performance\n current policy: frequency should be within 800 MHz and 1.90 GHz.\n The governor performance may decide which speed to use\n within this range.\n current CPU frequency is 1.90 GHz.");

QRegExp rx("[current CPU frequency is ]\\d+\\.\\d+[ GHz]{1}");
rx.indexIn(str);
qDebug()<<rx.cap(0);

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




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