Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.207.160.209] |
|
Сообщ.
#1
,
|
|
|
Я создал программу на Visual C++ 2012 под Windows. Потом я перенёс её на другой компьютер, где стоит Astra Linux, пересобрал в QT Creator (версия Qt 5.15.2) и запустил её.
В этой программе происходит считывание строк, содержащих русские символы и вывод данных из этих строк в комбобокс с чекбоксами. Кодировка текстового файла--UTF-8. Вот код: f = fopen("MyNIPs.txt","rt"); if (f!=NULL) { fgets(s,256,f); fgets(s,256,f); while (!feof(f)) { fgets(s,256,f); myString = QString::fromUtf8(s); stdstr = myString.toStdString(); strcpy(s,stdstr.c_str()); sscanf(s,"%s %s %s %s",sname,sX,sY,sZ); X = atof(sX); Y = atof(sY); Z = atof(sZ); strcpy(myNIPstruct.name,sname); myNIPstruct.X = X; myNIPstruct.Y = Y; myNIPstruct.Z = Z; NIParray.push_back(myNIPstruct); } } fclose(f); n = NIParray.size(); if (n>0) { QStandardItemModel* model = QStandardItemModel(n,1,ui->comboBox_20); for (i=0; i<n; i++) { myNIPstruct = (NIPstruct)NIParray.at(i); strcpy(sname,myNIPstruct.name); sprintf(sname2," %s",sname); mySprintf = QString(sname2); QStandardItem* item = new QStandardItem; item->setText(myString); item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); item->setData(Qt::Unchecked, Qt::CheckStateRole); model->insertRow(i,item); } ui->comboBox_20->show(); ui->comboBox_20->setModel(model); ui->comboBox_20->repaint(); } else { QMessageBox::information(0,"Ошибка","В файле NIPs.txt отсутствуют данные."); } Под Windows всё нормально работает--строки считываются с правильным отображением кириллических символов и в комбобокс с чекбоксами русские символы выводятся правильно. А под Astra Linux проблема--в считываемых строках вместо кириллических символов находится какая-то абракадабра и эта абракадабра выводится в комбобокс с чекбоксами. В чём причина этой проблемы? Как исправить эту ошибку? |
Сообщ.
#2
,
|
|
|
Отладку пробовал? Глянь эту заготовочку. Обработку ошибок допилишь сам.
|