CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3

Thread: parseatring

  1. #1
    Join Date
    Apr 2003
    Location
    Germany
    Posts
    2

    parseatring

    can you please suggest how I can read a line containing many strings,parse it and obtain an array of strings(word by word) and number of strings as return.
    Thanks

  2. #2
    Join Date
    Aug 2000
    Location
    West Virginia
    Posts
    7,725
    One way would be to read line by line into string,
    then use that string as input to a stringstream.
    Read from the stringstream to get the fields on that line.

    Code:
    #include <iostream>
    #include <sstream>
    #include <fstream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
      ifstream in("test.txt");
      if (!in)
      {
         cout << "problem with file open" << endl;
         return 0;
      }
    
      string line;
      string field;
    
      while (std::getline(in,line))
      {
          vector<string> vS;    // the array of words on the current line
    
          istringstream iss(line);
          while (iss >> field)
          {
              vS.push_back(field);
          }
          cout << "Number of fields in the line = " << vS.size() << endl;
      }
    
    
      return 0;
    }

  3. #3
    Join Date
    Apr 2003
    Location
    Germany
    Posts
    2
    I have written following program in C and getting error in line N1030 and in between.The charecter J is missing.Can you please locate the error.
    Thanks


    #include<conio.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #define MAXLEN 1000

    #define MAX_TOKS 200
    #define DELIMITERS " \t"
    #define MAX_STRING_LENGTH 255

    int parseString(char* line, char*** argv) {

    char* buffer;
    int argc;

    buffer = (char*) malloc(strlen(line) * sizeof(char)+1);

    strcpy(buffer,line);

    printf("buffer is %s\n",buffer);

    (*argv) = (char**) malloc(MAX_TOKS * sizeof(char**));
    argc = 0;
    (*argv)[argc++] = strtok(buffer, DELIMITERS);
    while ((((*argv)[argc] = strtok(NULL, DELIMITERS)) != NULL) &&
    (argc < MAX_TOKS)) ++argc;


    buffer = NULL;
    printf("buffer after free is %s\n",buffer);

    return argc;

    }


    int main(void)
    { int count=0,count1=0;
    FILE *fp1,*fp2;
    char readline [MAXLEN],write [MAXLEN]="";
    char **A;
    char input_file_name [50] ;
    double xt,yt,zt,it,jt,kt,tempX=0,tempY=0,tempZ=0;
    char X1[22],Y1[22],Z1[22],I1[22],J1[22],K1[22];
    int n,i;

    /* printf ( "Give the name of your input file : " ) ;
    gets ( input_file_name ) ;
    fp1 = fopen ( input_file_name, "r" ) ;*/
    fp1 = fopen ("CNCProgram.rtf","r");
    /* Check we got the file open */
    fp2 = fopen("CNCProgramH.rtf","w");

    if(fp1 == NULL)
    {printf("Reading file unsuccessful\n");
    return -1; /* exit the program */
    }
    else
    {printf("File reading suceessful\n");
    }

    while ( fgets(readline, MAXLEN, fp1) != NULL)
    { n=0;
    write[0]=0;
    /* Do something with readline here */
    count++;
    printf("Line count is %d %s\n",count,readline);
    /* splits the input line into separate words */
    n = parseString(readline, &A);
    printf("strings read:\t%d\n",n);

    for (i = 0; i < n; ++i)
    {
    printf("A[%d] = %s\n",i,A[i]);
    printf("A[i][0] = %c\n",A[i][0]);

    if((A[i][0]==('X')) || (A[i][0]==('x')))
    {
    strcpy(X1,A[i]);
    printf("String X1 is = %s\n", X1);
    xt = atof( X1+1);
    printf("xt is = %3.3f\n", xt );
    }

    if((A[i][0]==('Y')) || (A[i][0]==('y')))
    {
    strcpy(Y1,A[i]);
    printf("String Y1 is = %s\n", Y1);
    yt = atof( Y1+1);
    printf("yt is = %3.3f\n", yt );
    }

    if((A[i][0]==('Z')) || (A[i][0]==('z')))
    {
    strcpy(Z1,A[i]);
    printf("String Z1 is = %s\n", Z1);
    zt = atof( Z1+1);
    printf("zt is = %3.3f\n", zt );
    }

    if((A[i][0]==('I')) || (A[i][0]==('i')))
    {
    strcpy(I1,A[i]);
    printf("String I1 is = %s\n", I1);
    it = atof( I1+1);
    printf("it is = %3.3f\n", it );
    it=it+tempX;
    printf("it after addition is = %3.3f\n", it );
    sprintf (A[i],"I%3.3f",it);
    printf("$$$$$$$$$$$ %s\n",A[i]);
    }

    if((A[i][0]==('J')) || (A[i][0]==('j')))
    {
    strcpy(J1,A[i]);
    printf("String J1 is = %s\n", J1);
    jt = atof( J1+1);
    printf("jt is = %3.3f\n", jt );
    jt=jt+tempY;
    printf("jt after addition is = %3.3f\n", jt );
    sprintf (A[i],"J%3.3f\n",jt);
    printf("$$$$$$$$$$$ %s\n",A[i]);
    }

    if((A[i][0]==('K')) || (A[i][0]==('k')))
    {
    strcpy(K1,A[i]);
    printf("String K1 is = %s\n", K1);
    kt = atof( K1+1);
    printf("kt is = %3.3f\n", kt );
    kt=kt+tempZ;
    printf("kt after addition is = %3.3f\n", kt );
    sprintf (A[i],"K%3.3f\n",kt);
    printf("$$$$$$$$$$$ %s\n",A[i]);
    }
    strcat(write,A[i]);
    strcat(write," ");
    }
    tempX=xt;
    printf("tempX is = %3.3f\n", tempX );
    tempY=yt;
    printf("tempY is = %3.3f\n", tempY );
    tempZ=zt;
    printf("tempZ is = %3.3f\n", tempZ );
    printf("Writeline is %s \n",write);
    fprintf(fp2,"%s",write);
    }
    fclose(fp1);
    fclose(fp2);
    return 0;
    }


    To be saved as CNCProgram.rtf

    TEST G71
    N10 T35
    N20 G00 G90 X20.0 Y20.0 M03 S500
    N30 G01 G43 Z10.0 F4000
    N40 G01 X16.182 Y16.182 Z-11.000
    N50 G02 X17.115 Y13.929 I13.929 J13.929
    N60 G01 X17.115 Y-13.929
    N70 G02 X16.182 Y-16.182 I13.929 J-13.929
    N80 G02 X13.929 Y-17.115 I13.929 J-13.929
    N90 G01 X-13.929 Y-17.115
    N100 G02 X-16.182 Y-16.182 I-13.929 J-13.929
    N110 G02 X-17.115 Y-13.929 I-13.929 J-13.929
    N120 G01 X-17.115 Y13.929
    N130 G02 X-16.182 Y16.182 I-13.929 J13.929
    N140 G02 X-13.929 Y17.115 I-13.929 J13.929
    N150 G01 X13.929 Y17.115
    N160 G02 X16.182 Y16.182 I13.929 J13.929
    N180 G01 X21.311 Y21.311 Z-22.000
    N190 G02 X22.244 Y19.059 I19.059 J19.059
    N200 G01 X22.244 Y-19.059
    N210 G02 X21.311 Y-21.311 I19.059 J-19.059
    N220 G02 X19.059 Y-22.244 I19.059 J-19.059
    N230 G01 X-19.059 Y-22.244
    N240 G02 X-21.311 Y-21.311 I-19.059 J-19.059
    N250 G02 X-22.244 Y-19.059 I-19.059 J-19.059
    N260 G01 X-22.244 Y19.059
    N270 G02 X-21.311 Y21.311 I-19.059 J19.059
    N280 G02 X-19.059 Y22.244 I-19.059 J19.059
    N290 G01 X19.059 Y22.244
    N300 G02 X21.311 Y21.311 I19.059 J19.059
    N320 G01 X26.441 Y26.441 Z-33.000
    N330 G02 X27.374 Y24.188 I24.188 J24.188
    N340 G01 X27.374 Y-24.188
    N350 G02 X26.441 Y-26.441 I24.188 J-24.188
    N360 G02 X24.188 Y-27.374 I24.188 J-24.188
    N370 G01 X-24.188 Y-27.374
    N380 G02 X-26.441 Y-26.441 I-24.188 J-24.188
    N390 G02 X-27.374 Y-24.188 I-24.188 J-24.188
    N400 G01 X-27.374 Y24.188
    N410 G02 X-26.441 Y26.441 I-24.188 J24.188
    N420 G02 X-24.188 Y27.374 I-24.188 J24.188
    N430 G01 X24.188 Y27.374
    N440 G02 X26.441 Y26.441 I24.188 J24.188
    N460 G01 X31.570 Y31.570 Z-44.000
    N470 G02 X32.503 Y29.318 I29.318 J29.318
    N480 G01 X32.503 Y-29.318
    N490 G02 X31.570 Y-31.570 I29.318 J-29.318
    N500 G02 X29.318 Y-32.503 I29.318 J-29.318
    N510 G01 X-29.318 Y-32.503
    N520 G02 X-31.570 Y-31.570 I-29.318 J-29.318
    N530 G02 X-32.503 Y-29.318 I-29.318 J-29.318
    N540 G01 X-32.503 Y29.318
    N550 G02 X-31.570 Y31.570 I-29.318 J29.318
    N560 G02 X-29.318 Y32.503 I-29.318 J29.318
    N570 G01 X29.318 Y32.503
    N580 G02 X31.570 Y31.570 I29.318 J29.318
    N600 G01 X36.699 Y36.699 Z-55.000
    N610 G02 X37.632 Y34.447 I34.447 J34.447
    N620 G01 X37.632 Y-34.447
    N630 G02 X36.699 Y-36.699 I34.447 J-34.447
    N640 G02 X34.447 Y-37.632 I34.447 J-34.447
    N650 G01 X-34.447 Y-37.632
    N660 G02 X-36.699 Y-36.699 I-34.447 J-34.447
    N670 G02 X-37.632 Y-34.447 I-34.447 J-34.447
    N680 G01 X-37.632 Y34.447
    N690 G02 X-36.699 Y36.699 I-34.447 J34.447
    N700 G02 X-34.447 Y37.632 I-34.447 J34.447
    N710 G01 X34.447 Y37.632
    N720 G02 X36.699 Y36.699 I34.447 J34.447
    N740 G01 X41.829 Y41.829 Z-66.000
    N750 G02 X42.762 Y39.576 I39.576 J39.576
    N760 G01 X42.762 Y-39.576
    N770 G02 X41.829 Y-41.829 I39.576 J-39.576
    N780 G02 X39.576 Y-42.762 I39.576 J-39.576
    N790 G01 X-39.576 Y-42.762
    N800 G02 X-41.829 Y-41.829 I-39.576 J-39.576
    N810 G02 X-42.762 Y-39.576 I-39.576 J-39.576
    N820 G01 X-42.762 Y39.576
    N830 G02 X-41.829 Y41.829 I-39.576 J39.576
    N840 G02 X-39.576 Y42.762 I-39.576 J39.576
    N850 G01 X39.576 Y42.762
    N860 G02 X41.829 Y41.829 I39.576 J39.576
    N880 G01 X46.958 Y46.958 Z-77.000
    N890 G02 X47.891 Y44.706 I44.706 J44.706
    N900 G01 X47.891 Y-44.706
    N910 G02 X46.958 Y-46.958 I44.706 J-44.706
    N920 G02 X44.706 Y-47.891 I44.706 J-44.706
    N930 G01 X-44.706 Y-47.891
    N940 G02 X-46.958 Y-46.958 I-44.706 J-44.706
    N950 G02 X-47.891 Y-44.706 I-44.706 J-44.706
    N960 G01 X-47.891 Y44.706
    N970 G02 X-46.958 Y46.958 I-44.706 J44.706
    N980 G02 X-44.706 Y47.891 I-44.706 J44.706
    N990 G01 X44.706 Y47.891
    N1000 G02 X46.958 Y46.958 I44.706 J44.706
    N1020 G01 X52.087 Y52.087 Z-88.000
    N1030 G02 X53.020 Y49.835 I49.835 J49.835
    N1040 G01 X53.020 Y-49.835
    N1050 G02 X52.087 Y-52.087 I49.835 J-49.835
    N1060 G02 X49.835 Y-53.020 I49.835 J-49.835
    N1070 G01 X-49.835 Y-53.020
    N1080 G02 X-52.087 Y-52.087 I-49.835 J-49.835
    N1090 G02 X-53.020 Y-49.835 I-49.835 J-49.835
    N1100 G01 X-53.020 Y49.835
    N1110 G02 X-52.087 Y52.087 I-49.835 J49.835
    N1120 G02 X-49.835 Y53.020 I-49.835 J49.835
    N1130 G01 X49.835 Y53.020
    N1140 G02 X52.087 Y52.087 I49.835 J49.835
    N1160 G01 X57.217 Y57.217 Z-99.000
    N1170 G02 X58.150 Y54.964 I54.964 J54.964
    N1180 G01 X58.150 Y-54.964
    N1190 G02 X57.217 Y-57.217 I54.964 J-54.964
    N1200 G02 X54.964 Y-58.150 I54.964 J-54.964
    N1210 G01 X-54.964 Y-58.150
    N1220 G02 X-57.217 Y-57.217 I-54.964 J-54.964
    N1230 G02 X-58.150 Y-54.964 I-54.964 J-54.964
    N1240 G01 X-58.150 Y54.964
    N1250 G02 X-57.217 Y57.217 I-54.964 J54.964
    N1260 G02 X-54.964 Y58.150 I-54.964 J54.964
    N1270 G01 X54.964 Y58.150
    N1280 G02 X57.217 Y57.217 I54.964 J54.964
    N1300 G01 X62.346 Y62.346 Z-110.000
    N1310 G02 X63.279 Y60.094 I60.094 J60.094
    N1320 G01 X63.279 Y-60.094
    N1330 G02 X62.346 Y-62.346 I60.094 J-60.094
    N1340 G02 X60.094 Y-63.279 I60.094 J-60.094
    N1350 G01 X-60.094 Y-63.279
    N1360 G02 X-62.346 Y-62.346 I-60.094 J-60.094
    N1370 G02 X-63.279 Y-60.094 I-60.094 J-60.094
    N1380 G01 X-63.279 Y60.094
    N1390 G02 X-62.346 Y62.346 I-60.094 J60.094
    N1400 G02 X-60.094 Y63.279 I-60.094 J60.094
    N1410 G01 X60.094 Y63.279
    N1420 G02 X62.346 Y62.346 I60.094 J60.094
    N1440 G01 X67.476 Y67.476 Z-121.000
    N1450 G02 X68.409 Y65.223 I65.223 J65.223
    N1460 G01 X68.409 Y-65.223
    N1470 G02 X67.476 Y-67.476 I65.223 J-65.223
    N1480 G02 X65.223 Y-68.409 I65.223 J-65.223
    N1490 G01 X-65.223 Y-68.409
    N1500 G02 X-67.476 Y-67.476 I-65.223 J-65.223
    N1510 G02 X-68.409 Y-65.223 I-65.223 J-65.223
    N1520 G01 X-68.409 Y65.223
    N1530 G02 X-67.476 Y67.476 I-65.223 J65.223
    N1540 G02 X-65.223 Y68.409 I-65.223 J65.223
    N1550 G01 X65.223 Y68.409
    N1560 G02 X67.476 Y67.476 I65.223 J65.223
    N1580 G01 Z10.0
    N1590 M02
    fcone1403 G71

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured