我有一个奇怪的问题,不确定为什么:
我制作了一个程序,检查用户是否输入了有效名称“如果先找到qvector,则首先检查qvector”,然后说它被找到,问题是因为qvector有点大,所以我制作了一个txt文件并放入了名称像这样逐行:
名称1
名称2
名称3
。
。
。
。
我使用此功能使用qfile逐行读取它
for (int i=0; !names->atEnd(); i++){
q_names[i]=names->readLine();
}
q_names是QString的qvector
我检查使用qline编辑来显示它是否被复制,它是! “例如,我使用settext(q_names [3])展示了它,它的工作原理就像是一种魅力。
现在,当我尝试让用户输入一个字符串并检查它是否在向量中时,我使用了以下方法:
for(int i=0; i<50; i++){
if(lineedit_names->text()==S_names[i]){
..}
但这不起作用
上面只是一个例子,希望可以解决问题,下面是一些图片来了解我在说什么:
http://tinypic.com/view.php?pic=2wd7iph&s=8
http://oi61.tinypic.com/2wd7iph.jpg
当找到它“ matches”时,将下面的行编辑设置为true并启用它
奇怪的是,当我输入文本文件中的最后一个值时,它启用了它,就像没有问题“这意味着它找到了那个值”一样
我猜是因为换行了吗?
最佳答案
如果您直接通过QFile进行读取,则使用的是QIODevice::readLine
。的documentation表示将换行符留在原处。在这种情况下,它们将包含在比较中,您需要将它们删除以进行所需的比较。
如果改为使用QTextStream
来读取文件,如QFile
documentation所示,则所有换行符(如果在Windows上则为回车符)将被自动修剪。
关于c++ - 在Qvector中读取文件后存储数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22644356/