У меня есть строка, типа QString, которая содержит запись вида Some text COM5 some_text, число после COM в диапазоне от 1 до 255. Как мне взять подстроку COM123?
int comPos = s.indexOf("COM");
int comEndPos = s.indexOf(" ", comPos);
QString subStr = s.mid(comPos, comEndPos - comPos);
Только тут нет никаких проверок, нужно проверять результаты функций, а то мало ли у вас в строке не будет подстроки "COM" и т.д. и т.п.
Воспользуйтесь классом QRegExp.
Для вашей задачи, сформируем простое регулярное выражение вида:
COM\d{1,}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей