gpt4 book ai didi

c++ - 从 txt 文件中读取随机行,然后在 QT SDK 中对其进行修剪

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:02 25 4
gpt4 key购买 nike

我想请求你帮助我的小学校项目。任务是确定一个人的性别(使用 2 个单选按钮),然后随机选择一个日本姓氏和男性/女性中间名。还有剩下的任务,但与这部分相比没什么:(事情是,我已经设法使 3 个 .txt 文件(familynames.txt、malemiddlenames.txt 和 femalemiddlenames.txt)如下所示:1、明郎2、樱花3,等等...

我想做的是创建一个随机数,并读取行,直到它到达与我的随机数相同的行,然后剪掉数字和逗号,并在相应的标签。到目前为止,这就是我所拥有的:

void MainWindow::famname()
{
QString familyname;
int famrand =qrand() % 76;
ui->label_2->setText(QString::number(famrand));
int i = 1;

QFile famfile("C:\Users\Ryseth\gyakorlas\_familynames.txt");
QTextStream in(&famfile);
if(famfile.open(QIODevice::ReadOnly)){

while (!in.atEnd()) {
QString line = in.readLine();
i++;
if(i==famrand){
QStringList line2 =line.split(',');
familyname = line2.at(0);
ui->label_2->setText(QString::number(famrand)+" "+QString::number(i));
ui->FamilyLabel->setText(familyname);
}//IF
}//WHILE
}//IF
famfile.close();
}//NGEN

如果你们中的任何人能想到某种解决方案或有任何建议,请不要犹豫与我分享 :D

谢谢,祝你有个愉快的一天/晚上:Ruben

最佳答案

我认为使用 Boost::Spirit::Qi 可以将文件解析为 std::vector< std::string >并使用简单的 C++ 方法进行操作。

但为了帮助您解决 Qt 问题:

你永远不会检查 int famrand =qrand() % 76;产生一个合法的数字,你的文本文件中是否有足够的条目......

int i = 1;这个整数是不必要的,数字在文本文件中......

我的解决方案(未经测试):

while (!in.atEnd()) {
QString line = in.readLine();
QStringList list = line.split(",", QString::SkipEmptyParts);
bool ok;
int idx = list.at(0).toInt(&ok);
if (ok && idx == famrand) {
familyname = list.at(1).trimmed();
// ... do with your ui whatever you want
}//IF
}//WHILE

请记住,如果字符串到 int 的转换失败和/或列表的访问器抛出 (list.at(xx)),您必须进行错误处理

积极的一面是,您不需要有序的文本文件!

关于c++ - 从 txt 文件中读取随机行,然后在 QT SDK 中对其进行修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com