在CentOS上给出错误结果的QString函数 我使用C++ Qt库,下面的代码在Windows上工作得很好,但是没有在CITOS:< /P>上工作 if(line.startsWith("[", Qt::CaseInsensitive)) { int index = line.indexOf(']', 0, Qt::CaseInsensitive); QString subLine = line.mid(index+1); subLine = subLine.trimmed(); tokenList = subLine.split("\t"); } else { tokenList = line.split("\t"); }

在CentOS上给出错误结果的QString函数 我使用C++ Qt库,下面的代码在Windows上工作得很好,但是没有在CITOS:< /P>上工作 if(line.startsWith("[", Qt::CaseInsensitive)) { int index = line.indexOf(']', 0, Qt::CaseInsensitive); QString subLine = line.mid(index+1); subLine = subLine.trimmed(); tokenList = subLine.split("\t"); } else { tokenList = line.split("\t"); },c++,string,qt,C++,String,Qt,我有一行[x.x.x.x]something。/dir/file.extension,我想在将行分解为令牌时忽略[x.x.x.x]部分。我在windows上使用VC9进行调试,并且工作正常 编辑:我删除了mid()并使用了right(),但仍然存在相同的问题,在windows上工作,但在CentOS上不工作 编辑:在linux上使用QMessageBox进行调试后,我得出结论,控件永远不会进入if块,我尝试使用if(line.data()[0]='['),但结果相同。您的代码可以简化 line.

我有一行[x.x.x.x]something
。/dir/file.extension
,我想在将行分解为令牌时忽略[x.x.x.x]部分。我在windows上使用VC9进行调试,并且工作正常

编辑:我删除了mid()并使用了right(),但仍然存在相同的问题,在windows上工作,但在CentOS上不工作


编辑:在linux上使用QMessageBox进行调试后,我得出结论,控件永远不会进入if块,我尝试使用if(line.data()[0]='['),但结果相同。

您的代码可以简化

line.remove(QRegExp("\\[\\s+\\d+\\.\\d+\\.\\d+\\.\\d+\\s+\\]"));
tokenList = line.split("\t");

你能在上面提到的操作系统上调试它吗?你是从Windows上创建的文件中读取的吗?你可能有行尾问题。@p.i.g.我可以在Windows上调试它,但在CentOS上不行,我没有调试环境。它是如何工作的?请给出一个输入字符串的示例,并显示两个不同的输出。而且CentOS是开源的,所以只需使用虚拟机-如果您的客户正在使用特定的操作系统,您应该在其上进行测试。请给出输入字符串和错误的输出字符串的示例。在这种情况下,“不工作”是什么意思?谢谢,但行的内容是动态的,我不知道确切的子字符串[x.x.x.x],这就是我查找的索引的原因]在它之后读取字符串。然后,可以使用正则表达式。我已经更新了答案。它将返回“[192.168.2.149]DEM-FILENAME[0]../terrain/los_angeles-w.DEM”,但我希望在编辑完成后返回“DEM-FILENAME[0]../terrain/los_angeles-w.DEM”。/terrain/los_angeles-w.DEM”您需要计算出正确的正则表达式。我对那些东西不太熟悉。似乎您的x.x.x.x是一个ip地址,我已经相应地再次更新了答案。