Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 183
  • Last Modified:

how can i parse part of string ? (urgent)

Hi experts,

I have a string, like " this is a customer account, ref: abc#123456789 ".
I only need to parse partial string "ref: abc#123456789". how can i do that ?
Any function can do that ?

Thanks
0
justinY
Asked:
justinY
1 Solution
 
jkrCommented:
You'd find the start of the substring by e.g. looking for 'ref:', like

char acSomeString[] = " this is a customer account, ref: abc#123456789 ";

char* pszStringToParse = strstr ( acSomeString, "ref:");

// will then be "ref: abc#123456789 "
0
 
zekardCommented:
justinY,
try this:

#include <iostream>

using namespace std;

char* FindSubStr ( char *str, int size, char *query )
{
      int IndexOfSubStr = 0;

      // find occurence of substr
      for ( int i = 0; i < size; i++ )
      {
            if ( str[i] == query[0] && str[i+1] == query[1] && str[i+2] == query[2] )
            {
                  IndexOfSubStr = i;
                  break;
            }
      }

      static char substr[128];
      int substrIndex = 0;
      // copy string to substr and return it
      for ( i = IndexOfSubStr; i < size; i++ )
      {
            substr[substrIndex] = str[i];
            substrIndex++;
      }

      return substr;
}
int main ()
{
      // input string
      char str[128] = "this is a customer account, ref: abc#123456789";
      
      // substr stores the sub string if found
      char *substr;
      
      // size of input string
      int size = strlen ( str );

      // call function to find our string
      substr = FindSubStr ( str, size, "ref:" );

      cout << substr << endl;

      return 0;
}
0
 
Sys_ProgCommented:
More C++ way of doing it

#include <iostream>
#include <string>

using namespace std ;
int main () {

      string s1 = "this is a customer account, ref: abc#123456789 ";

      unsigned int pos = s1.find ( "ref" ) ;
      cout << s1.substr ( pos ) ;
      system ( "PAUSE" ) ;
}
0
 
justinYAuthor Commented:
Thank you all,
Lets change my question a little bit.

string s1 = "this is a customer account,  'abc#123456789' ";
so i want to extract substring "abc#123456789" from single quotes (' ')
i like to use
s = s.substr(s.find_first_of("\'") + 1);
s = s.substr(s.find_last_of("\'") - 1);
My code is like the followings. but i have compiling errors, any experts can help ? or any function of extracting substring from single quotes (' ') i can use ?
 
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <algorithm>

using namespace std;

main(int arc, char *arv[])
{
      ifstream fin("fin.txt");
      ofstream fout("fout.txt");
      char row_read[512];
      char row_elem[50][50];
      int i =0;
while( fin.getline( row_read, sizeof( row_read ) ) )
{
      //////////////////////////////////////////
      // get tokens, parse string with ","
      //////////////////////////////////////////
      char *token = strtok( row_read, ',' );
      char *subtoken(token);
      while( token != NULL )
      {
            
           subtoken = token.substr(token.find_first_of("\'") + 1);
           subtoken = token.substr( token.find_last_of("\'") - 1);
            /////////////////////////////////////////////////////////////
            //write the subtoken into row_elem[i]
            ////////////////////////////////////////////////////////////
             /* While there are tokens in "string" */
                   strcpy(row_elem[i], subtoken );
             /* Get next token: */
                   token = strtok( NULL, ',' );
                   i++;
                  
            }
            
      }

                    fout<<setw(20)<< row_elem[8]<<endl;

     i=0;
}

return 0;
}
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now