On Sat, 28 May 2005, anand wrote:
Hi,
I am looking for a possible C++ File class that allows to do standard
"Perl Like" operations on structured data files in ASCII text.
For example:
1) Get the first and third fields from each line into a string obj
2) Get ALL "words" in a "line" of the file
etc...
Basically, anything you would be able to do from a Perl script, but
thru C++. I am looking to use it in my program and I know there are
better programmers than me out there, so I thought I will check first!
THanks in advance!
Anand
Couple of functions I wrote do do just what you ask. Excep no regular
expressions. THere is a split and a sub. You could extend these to use pcre
lib and get the location of a regular expression. I just haven't carried it
that far YET :)
#include <string>
#include <sstream>
#include <locale>
bool StrSplit(const string in,char delim,vector<string>& out)
{
if (in.empty()) return false;
istringstream iss(in);
string token;
out.clear();
while(getline(iss, token, delim))
out.push_back(token);
return true;
}
bool StrSub(string& cp,string sub_this,string for_this,int num_times)
{
int i,loc;
if (cp.empty())
{
cp = sub_this;
return true;
}
if (for_this.empty()) return false;
for (i = 0; i NE num_times; i++)
{
loc = cp.find(for_this,0);
if (loc GE 0) cp.replace(loc,for_this.length(),sub_this);
else return true;
}
return true;
}
___ _ ____ ___ __ __
/ _ )(_) / /_ __ / _ \___ _/ /_/ /____ ___
/ _ / / / / // / / ___/ _ `/ __/ __/ _ \/ _ \
/____/_/_/_/\_, / /_/ \_,_/\__/\__/\___/_//_/
/___/
Texas Instruments ASIC Circuit Design Methodology Group
Dallas, Texas, 214-480-4455,
b-******@ti.com
[ See
http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]