crossplatform.ru

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


  Ответ в Как распарсить строку?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
vankleef Дата 29.5.2011, 14:52
 
Цитата(RazrFalcon @ 29.5.2011, 2:42) *
Ухты! О таком варианте даже не догадывался. Спасибо.


в ассистанте неплохие примеры =)
RazrFalcon Дата 29.5.2011, 1:42
  Ухты! О таком варианте даже не догадывался. Спасибо.
vankleef Дата 29.5.2011, 1:35
  извиняюсь за "на скорую руку", поздно, голова еле варит)

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);

RazrFalcon Дата 28.5.2011, 22:01
  Это я к примеру написал.

Суть в том, что в тексте есть <тут текст> 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+.*"));

На счет скорости не знаю. Интересует более красивое/рациональное решение.
Алексей1153 Дата 28.5.2011, 20:53
  сдаётся мне, что это и есть нужная регулярка )

[0-9].*GHz
Litkevich Yuriy Дата 28.5.2011, 20:11
 
Цитата(RazrFalcon @ 28.5.2011, 23:07) *
Как тот так.
и что все эти символы значат?
RazrFalcon Дата 28.5.2011, 20:07
  да нет :lol:
я имел ввиду вот что:
cpufreq-info | grep -oe '[0-9].*GHz'
Как тот так.
Litkevich Yuriy Дата 28.5.2011, 19:58
 
Цитата(RazrFalcon @ 28.5.2011, 22:35) *
нужен аналог grep
а он как частоту процессора находит?
RazrFalcon Дата 28.5.2011, 19:35
  Есть QString. Туда копируется вывод консольной утилиты через QProcess. Мне нужно в этой длинной строке найти, в моем случае, частоту ЦП.
Как это реализовать?

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

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

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


PS: нужен аналог grep
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 23:02