У меня есть файл CSV и некоторые из текста в нем следующим образом:Populate структура с, специфические данные из QStringList
sendLink, 23, VL_name1, 0.5, 0.5
PATH, (device_1, 1, SW1, 10),\
(SW_2, 23, SW_1, 23),\
(SW_1, 9, device_2, 1)
PATH, (device_3, 2, SW_12, 10),\
(SW_12, 23, SW_11, 23),\
(SW_11, 9, device_2, 2)
sendLink, 24, VL_name2, 0.5, 0.5
PATH, (device_4, 1, SW_09, 24),\
(SW_01, 9, device_2, 1)
PATH, (device_5, 2, SW_19, 24),\
(SW_11, 9, device_2, 2)
sendLink, 25, VL_name3, 0.5, 0.5
PATH, (device_7, 1, SW_09, 24),\
(SW_09, 17, SW_01, 24),\
(SW_01, 9, device_2, 1)
PATH, (device_8, 2, SW_19, 24),\
(SW_19, 17, SW_11, 24),\
(SW_11, 9, device_2, 2)
Я использую Qt и выбрали все данные из CSV в QStringList где каждый элемент QStringList является одной строкой из csv.
Я определил структуру, как показано ниже:
typedef struct{
QString outputESResource;
QString inputESResource;
} Path_t;
и теперь мое намерение состоит в том, чтобы отсканировать хотя список QString и для каждой строки, которая начинается с sendLink, я должен прочитать немедленные следующие строки, которые начинаются с PATH
, сохраните второй элемент (device_1, device_3) в outputESResource
, а затем загляните в строки после строки PATH и выберете предыдущий столбец (device_2) в этом примере и сохраните его в inputESResource
.
Для этого, я ищу через StringList строки, начинающиеся с PATH следующим образом:
for(int i=0; i < fileContents.count(); i++)
{
if(fileContents[i].startsWith("PATH", Qt::CaseSensitive))
{
//scan next element in stringlist
}
}
Я не уверен, что это правильный путь для реализации этого. Может ли кто-нибудь проконсультироваться с ним.
Возможный дубликат [Анализ через файл csv в Qt] (http: // stackoverflow .com/questions/27318631/parsing-through-a-csv-file-in-qt) –