Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QString最大分割(块的数量?) 我是C++新手,我尝试使用QT框架来创建一个应用程序,但是,我需要解析一个大文本文件,与SPLITE()选项进行斗争。_String_Qt_Split_Qstring - Fatal编程技术网

QString最大分割(块的数量?) 我是C++新手,我尝试使用QT框架来创建一个应用程序,但是,我需要解析一个大文本文件,与SPLITE()选项进行斗争。

QString最大分割(块的数量?) 我是C++新手,我尝试使用QT框架来创建一个应用程序,但是,我需要解析一个大文本文件,与SPLITE()选项进行斗争。,string,qt,split,qstring,String,Qt,Split,Qstring,我试图将每一行分割成6段,每一个字符串的长度都不相同,因此不确定是否可以使用mid()、left()或right()函数 例如,在Java中,我可以很容易地使用max split进行分割,就像这样,它允许我分割成6个部分,将空格保留在最后一个子字符串中: String str = "1 689 0 0 02WA Aaaa Bbbb Ccccc"; String str2 = "1 6389 0 0 02WAB Eeee Ff Ggggggggg"; Syst

我试图将每一行分割成6段,每一个字符串的长度都不相同,因此不确定是否可以使用mid()、left()或right()函数

例如,在Java中,我可以很容易地使用max split进行分割,就像这样,它允许我分割成6个部分,将空格保留在最后一个子字符串中:

    String str = "1    689 0 0 02WA Aaaa Bbbb Ccccc";
    String str2 = "1    6389 0 0 02WAB Eeee Ff Ggggggggg";

    System.out.println("First line");
    for(int i=0; i < 6; i++){
       System.out.println(str.split("\\s+", 6)[i]);
    }
    System.out.println("\nSecond line");
    for(int i=0; i < 6; i++){
       System.out.println(str2.split("\\s+", 6)[i]);
    }
问题是,如果我知道我想要的每个子字符串的确切长度,我可以使用left()、right()或mid(),但它们会一行一行地改变,所以我永远不知道


有没有什么方法可以像Java一样在Qt中实现这一点?

请参阅以获得答案。我已经看到了该函数的可能重复项,但正如我提到的,要使用QString::mid(左或右)函数,您需要知道n个字符数:QString QString::mid(int位置,int n=-1)const返回一个字符串,该字符串包含该字符串的n个字符,从指定的位置索引开始。问题是,我不知道字符串有多长,或者子字符串是我需要的,我只需要在前5次按“空白”分割,然后将其余的作为第6次分割。啊,对了。您可以使用QString::indexOf确定第一个空格的位置,然后使用QString::mid()(或::left)提取第一个子字符串。然后再次使用::indexOf()确定下一个位置(将
from
参数设置为最后一个位置,可能是+1),并再次使用::mid()提取它。您可以将其写入for()循环,以拆分n次。记住,如果indexOf()返回-1.nice,则退出循环。我将看看这一点,或者只是编写一个小java程序来为我进行解析;)谢谢
First line
1
689
0
0
02WA
Aaaa Bbbb Ccccc

Second line
1
6389
0
0
02WAB
Eeee Ff Ggggggggg