Есть файл с 3 колонками из цифр. Колонки могут отделяться друг от друга пробелами и табуляциями, количество которых неизвестно (пользователи вводят данные по разному). Я хотел бы выделить из каждой строки по 3 числа. Не нашел функции QT для решения этой задачи, пришлось сделать как обычно в С (на примере строки):
QString sBuf = " \t 1.03 \t 123.06 \t\t \t 15.6 \t";
float rBufItem[3];
sscanf(sBuf.toAscii(), "%f%f%f", &rBufItem[0], &rBufItem[1], &rBufItem[2]);
for(i=0; i < 3; i++) {
printf("%f\t", rBufItem[i]);
}
Мне предложили использовать split в стринглист, появились нулевые элементы, которые нужно удалять. Предложили и другое решение:
QString string = " \t 1.03 \t 123.06 \t\t \t 15.6 \t";
QTextStream stream ( &string );
for ( std::size_t i = 0; i < amountItems; ++i ) {
stream >> items[ i ];
}
Однако это решение тоже не помогло при изменении строки
QString string = " \t 1.03 \tttt \t 123.06 \t\t \t \t 15.6 \t";
QTextStream stream ( &string );
for (i = 0; i < 3; ++i ) {
stream >> rBufItem[ i ];
}
for(i = 0; i < 3; i++) {
printf("%f\t", rBufItem[i]);
}
Числа стали считываться неправильно (как и при использовании sscanf даже при строке char). Подскажите, пожалуйста, как решить мою задачу средствам QT и почему приведенные выше решения не дают правильных результатов.