多维数组-如何在c++中将两个令牌设置为一个以波浪线分隔的字符串



我想设置两个令牌,以便每次EBO有DWG时,我要么将它们都加载到数组中,要么将它们都写入带有某种分隔符的文本文件中。在c++中

样本数据:

<>之前1 ~ EBOA54_5047734 ~ 7 - 554440039 - dwg ~2 ~ EBOA54_5045445 ~ 7 - 544440304 - dwg ~3 ~ EBOA54_5045445 ~ 7 - 544440303 - dwg ~4 ~ EBOA54_5047939 ~ 7 - 344443445 - dwg ~5 ~ EBOA54_5047770 ~ 7 - 454440054 - dwg ~6 ~ EBOA54_5045048 ~ 7 - 344443484 - dwg ~7 ~ EBOA54_5045444 ~ 7 - 344440300 - dwg ~8 ~ EBOA54_5047833 ~ 7 - 553447500 - dwg ~9 ~ EBOMPS_5040395 ~ ~10 ~ EBOMPS_5040385 ~ ~11 ~ EBOA54_5048008 ~ 7 - 544 a44574dwg ~12 ~ EBOMPS_5040387 ~ ~13 ~ EBOMPS_5040394 ~ ~14 ~ EBOMPS_5040394 ~ ~15 ~ EBOMPS_5040395 ~ ~16 ~ EBOMPS_5040487 ~ ~17 ~ EBOA54_5045075 ~ 7 - 444440444 - dwg ~18 ~ EBOA54_5047748 ~ 7 - 344444043 - dwg ~19 ~ EBOA54_5047475 ~ 7 - 344450444 - dwg ~20 ~ EBOMPS_5040404 ~ ~21 ~ EBOMPS_5040397 ~ ~22 ~ EBOMPS_5040375 ~ ~23 ~ EBOMPS_5040383 ~ ~24 ~ EBOMPS_5040404 ~ ~25 ~ EBOMPS_5040403 ~ ~26 ~ EBOMPS_5040444 ~ ~27 ~ EBOMPS_5040378 ~ ~28 ~ EBOMPS_5040444 ~ ~29 ~ EBOMPS_5040398 ~ ~30 ~ EBOMPS_5040447 ~ ~31 ~ EBOA54_5048404 ~ 7 - 344440000 - dwg ~32 ~ EBOA54_5047954 ~ ~33 ~ EBOA54_5047995 ~ 7 - 344540049 - dwg ~34 ~ EBOMPS_5040407 ~ ~35 ~ EBOA54_5047845 ~ 7 - 344450440 - dwg ~36 ~ EBOMPS_5040375 ~ ~37 ~ EBOA54_5047549 ~ 7 - 344534444 - dwg ~38 ~ EBOA54_5048444 ~ 7 - 544 a44408dwg ~39 ~ EBOA54_5048444 ~ 7 - 344444044 - dwg ~40 ~ EBOMPS_5040448 ~ ~41 ~ EBOMPS_5040444 ~ ~42 ~ EBOA54_5048445 ~ 7 - 544 a44598dwg ~43 ~ EBOMPS_5040408 ~ ~44 ~ EBOMPS_5040449 ~ ~45 ~ EBOMPS_5040444 ~ ~46 ~ EBOMPS_5040443 ~ ~之前

可能的示例输出1:

<>之前EBOA54_5047734 ~ 7 - 554440039 dwgEBOA54_5045445 ~ 7 - 544440304 dwg等。之前

可能的示例输出2:

<>之前Array 1-EBOA54_5047734、EBOA54_5045445、EBOA54_5045445、EBOA54_5047939等。阵列2-7-554440039DWG、7-544440304DWG、7-544440303DWG、7-344443445DWG等。之前

我的目的是将DWG数字与另一个相同格式的文件进行比较,这样我就可以确定EBO数字是否随时间而变化。字符串的长度和起始字符可以随时间变化,因此没有特定的字符可以硬编码。它必须基于分隔符。它可以写入文本文件,就像我下面列出的代码一样,也可以写入数组。如果它被写入数组,那么我不希望在数组中添加~波浪。

代码尝试:

void extract_xml_ebo_dwg()
{

    int  uu = 0;
    int   j;
    char *y = 0;
    char data_field[25][50];
    char delimiter;
    fgets(Test_line_in, LINESZ, xml_ebo_dwg_file);
        strcpy(testebo_work_line, Test_line_in);
        y=strtok(testebo_work_line, "~");
        j = 0;
        while(y)
        {
            j++;
            if(j==1)
            {
                strcpy (ebo_index, y);
                             }
                y = strtok(NULL,"~");
                if(ebo_index)
                {
                strcpy(line_out, ebo_index);
                printf(ebo_index);
                strcat(line_out,"~");
                fprintf(Testfileout1, line_out);
                }

            if(j==2)
            {
                strcpy (DWG_id, y); 
            }
                y = strtok(NULL,"~");
                if(DWG_id != " ")
                {
                strcpy(line_out, DWG_id);
                printf(DWG_id);
                strcat(line_out, "~");
                fprintf(Testfileout1, line_out);
                }

我认为你的措辞不是很好,但让我来谈谈我的做法。

我会先看一堆数据。请确保您对数据的假设没有异常。

看着这些数据,我想逐行分析。为了简化操作,请将每行读入缓冲区,然后使用该缓冲区。

看单行,我可以看到有3个波浪字。C库提供了几个函数来定位它们,所以从获取它们的位置开始。

如果在第2和第3个波浪之间只有空白,那么看起来该行没有"DWG"。听起来你好像忽略了这些行。

否则,有两个字符串值。你知道它们在哪里,因为它们在波浪之间,你知道波浪的位置。此时提取它们应该是非常简单的,并且可以对它们做任何您想做的事情。

相关内容

  • 没有找到相关文章

最新更新