QTextCodec* codec = QTextCodec::codecForName("windows-1251"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec);
dict * firstDict=NULL;/*начало словаря*/ names * firstNames=NULL; /*начало списка названий городов*/ dict * currDict; /*указатель для перебора словаря*/ names * currNames; /*указатель для перебора названий городов*/ int Number;QFile file(":/files/Logos/List.txt"); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this,tr("Ошибка"),tr("Невозможно прочесть директорию")); return 0; } else { char bufChar = '\0', *bufName;/*буфер для букв и названий городов*/ QTextStream in(&file); in.setCodec("windows-1251"); while(!in.atEnd()) { QString line = in.readLine(30);/*считываем название из файла*/ bufName = line.toAscii().data();.........дальше вы поняли
ui->display->append(bufName);
[u]Главная функция:[/u]get_city=getcity(); ui->display->append("GETCITY ПРОШЕЛ"); ui->display->append(get_city); ui->display->append("ВЫШЕ ТО, ЧТО ПРИШЛО"); c=check_city2(get_city, firstDict); ui->display->append("И прочекали");[u]То, что вы видите первостепенно:[/u]char* MainWindow::getcity() { char* city; ui->vvLine->setDisabled(false); connect(ui->vvLine,SIGNAL(textChanged(QString)),this,SLOT(TextChanged(QString))); QEventLoop *newLoop = new QEventLoop(this); connect(ui->vvBut,SIGNAL(clicked()),newLoop,SLOT(quit())); newLoop->exec(); ui->lastcity->setText(ui->vvLine->text()); ui->display->append("СЕЙЧАС ПРЕОБРАЗУЮ"); QString str(ui->vvLine->text()); city = str.toAscii().data(); ui->vvBut->setDisabled(true); ui->vvLine->setDisabled(true); ui->vvLine->clear(); ui->display->append(city); city = str.toAscii().data(); ui->display->append("И ЕЩЕ 2 РАЗА:"); ui->display->append(city); city = str.toAscii().data(); ui->display->append(city); city = str.toAscii().data(); return city;}
C++ (Qt)char *c = nullptr;QString s ("some text");c = s.toAscii().data();//work with c
C++ (Qt)char *c = nullptr;QString s ("some text");const QByteArray b (s.toAscii());c = b.data();//work with c
C++ (Qt)char *c = nullptr;QString s ("some text");QByteArray b (s.toAscii());c = b.data();//work with c
C++ (Qt)ui->display->append();ui->display->append();ui->display->append();
C++ (Qt)struct names /*spisok nazvanii*/{ QString CityName; /*nazvanie goroda*/ names * next; /*ukaz na sled*/}; struct dict /*slovar gorodov iz faila*/{ QString letter; /*bukva*/ names name;/*spisok nazvanii na tekush bukvu*/ int NumberOfNames; /*kol-vo zapisei v razdele nazvanii gorodov*/ dict * next;/*ukaz na sled*/ names * first; /*ukaz na pervuyu zapis*/};
C++ (Qt)dict * firstDict=NULL;/*nachalo*/ names * firstNames=NULL; /*nachalo spiska nazvanii*/ dict * currDict; /*ukaz dlya perebora spiska*/ names * currNames; /*ukaz dlya perebora nazvanii*/ int Number,x; QFile file(":/files/Logos/List.txt"); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this,tr("Error"),tr("Unreal to read this directory")); return 0; } else { ui->display->append("Begin"); QString bufChar = "\0", bufName;/*buffer dlya obmena*/ QTextStream in(&file); in.setCodec("windows-1251"); while(!in.atEnd()) { bufName = in.readLine(30); x=QString::compare(QString(bufName[0]),bufChar); if (x!=0)/*novaya bukva nachala nazvanii*/ { bufChar=QString(bufName[0]); ui->display->append(bufChar); currDict=(dict *)malloc (sizeof(dict));/*videlenie pamyati*/ currDict->next = firstDict; //!!currDict->letter=bufChar;/*zapis pervoi bukvi*/ firstNames=NULL;/*novii spisok gorodov*/ currDict->first=(names *)malloc (sizeof(names));/*videl pamyati dlya novoi zapisi v spiske gorodov*/; firstDict=currDict;/*sform pervii element v slovare*/ currNames=currDict->first; //!!currNames->CityName=bufName;/*zapis nazvaniya*/ currNames->next = NULL; firstNames=currNames; Number=0; currDict->NumberOfNames=++Number; } else /*takaya bukva uje imeetsya*/ { currDict->first=(names *)malloc (sizeof(names)); currNames=currDict->first; currNames->next = firstNames; //!!currNames->CityName=bufName;/ currDict->NumberOfNames=++Number; firstNames=currNames; } } file.close(); }