G
Gary Wessle
Hi
the code below prints out part of the list then "Segmentation fault",
but if I comment out the line " Mytype tmp( ss.c_str() ); " it prints
out the whole list.
please take a look, what did I do wrong for it to sig-fault?
thank you
//****************************************************************
#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
class Mytype {
protected:
char _fir[40];
char _sec[40];
char _all[80];
public:
const char* fir() const;
const char* sec() const;
const char* all() const;
Mytype(const char* all);
};
Mytype::Mytype(const char* all)
{
strncpy(_fir, all, 3);
_fir[3]='\0';
strncpy(_sec, all+4, 3);
_sec[3]='\0';
strcat(_all, _fir);
strcat(_all, _sec);
}
const char* Mytype::fir()const { return _fir;}
const char* Mytype::sec()const { return _sec;}
const char* Mytype::all()const { return _all;}
int main(){
string s = "ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef";
char_separator<char> sep(",");
typedef tokenizer<char_separator<char> > tokenizer;
tokenizer tok(s, sep);
short x = 0;
for (tokenizer::iterator i=tok.begin(); i!=tok.end(); ++i){
cout << ++x << " " << *i << endl;
string ss(*i);
Mytype tmp( ss.c_str() ); // <<<<<<<<<<<<<<<< comment this
}
}
the code below prints out part of the list then "Segmentation fault",
but if I comment out the line " Mytype tmp( ss.c_str() ); " it prints
out the whole list.
please take a look, what did I do wrong for it to sig-fault?
thank you
//****************************************************************
#include <boost/tokenizer.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
class Mytype {
protected:
char _fir[40];
char _sec[40];
char _all[80];
public:
const char* fir() const;
const char* sec() const;
const char* all() const;
Mytype(const char* all);
};
Mytype::Mytype(const char* all)
{
strncpy(_fir, all, 3);
_fir[3]='\0';
strncpy(_sec, all+4, 3);
_sec[3]='\0';
strcat(_all, _fir);
strcat(_all, _sec);
}
const char* Mytype::fir()const { return _fir;}
const char* Mytype::sec()const { return _sec;}
const char* Mytype::all()const { return _all;}
int main(){
string s = "ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef,ade-ddf,wee-see,dfe-wef";
char_separator<char> sep(",");
typedef tokenizer<char_separator<char> > tokenizer;
tokenizer tok(s, sep);
short x = 0;
for (tokenizer::iterator i=tok.begin(); i!=tok.end(); ++i){
cout << ++x << " " << *i << endl;
string ss(*i);
Mytype tmp( ss.c_str() ); // <<<<<<<<<<<<<<<< comment this
}
}