|
5Qter豆
本帖最后由 edg233 于 2017-5-13 20:01 编辑
找了很久没找到该怎么办 ,请求帮忙 感谢 我很想好好排版 能给帮忙解决问题的人省点气力,论坛的编辑器我用的真的好累。。问题有两个分别是问题一
我的QStringList在split后分离数据以后 数据的最后还多了一项空数据行
qDebug() << list << list.length(); //这是打印代码 后面有全部代码
打印结果:
("apple1", "阿斯顿") 2
("apple2", "阿斯顿") 2
("") 1 //就是这一行 没有东西 多出来的一行[size=13.3333px]
问题二[size=13.3333px]QstringList 赋值运行以后出现异常报错
list = line.split(",");
qDebug() << list << list.length();
QString Worddata = list.at(0); ------这是赋值1
//这边有bug ,当把list.at(1)赋值给Meaningdata以后,运行时就会报错,如果只进行赋值1或2注释掉另一个时,程序不报错,赋值1、2都写的话就会报错
QString Meaningdata = list.at(1);----这是赋值2
这边是报错的图片
以下是关键部分的全部代码
/打开文件
if(!EngWordFile.open(QIODevice::ReadWrite ))
{ qDebug("open file failed");
exit(1); }
//判断文件大小,查看打开正常否
int size = EngWordFile.size();
qDebug("full file size is %d",size);
//读文件 QTextStream in(&EngWordFile);
in.setCodec("utf-8");
QString line = in.readLine();
QStringList list;
//读取文件内容
while(!line.isNull()){
line = in.readLine();
list = line.split(",");
qDebug() << list << list.length();
QString Worddata = list.at(0); ------这是赋值1
//这边有bug ,当把list.at(1)赋值给Meaningdata以后,运行时就会报错,如果只进行赋值1或2注释掉另一个时,程序不报错,赋值1、2都写的话就会报错
QString Meaningdata = list.at(1);----这是赋值2
}
|
最佳答案
查看完整内容
1、用QString::split() 最后多一行数据,有可能原因是QString内容是"a,,b,c",这样就会变成list1: [ "a", "", "b", "c" ]
解决方法就是用
2、初步判断不是QStringList的使用问题,怀疑是不是文件本身的问题,比如用记事本默认的非UTF8编码格式写的,
然后你用UTF8格式解析,导致文件内容乱码
|