justinY
asked on
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
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
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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" ) ;
}
#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" ) ;
}
ASKER
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_fi rst_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;
}
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("
s = s.substr(s.find_last_of("\
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_fi
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;
}
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;
}