A funny thing..
From
Bo Simonsen@2:236/100 to
All on Tue Apr 20 23:10:06 2010
Hi everybody...
I had one of these bugs today where you really wanted to say "doh"..
I've this nice line splitting routine:
-------------- C++ code --------------
void SplitLine(string s, vector<string>& l, char delim, int times) {
string::size_type i = 0;
string::size_type last = 0;
bool ignore = false;
while(i < s.size()) {
if(s[i] == '"') {
if(!ignore) {
ignore = true;
last = i + 1;
}
else {
string new_str = s.substr(last, i-last);
l.push_back(new_str);
last = i + 2;
i += 2;
ignore = false;
}
}
else if(s[i] == delim && !ignore) {
string new_str = s.substr(last, i - last);
l.push_back(new_str);
last = i;
last++;
}
++i;
if(times > 0 && static_cast<int>(l.size()) >= times) {
break;
}
}
if(s.size() - last > 0) {
cout << last << " " << s.size() << endl;
string new_str = s.substr(last, s.size() - last);
l.push_back(new_str);
}
}
----------------------------
The problem is that this code does not work, since the last
if-block is invoked at times where it should not be invoked.
Can anybody see why? :-)
Bo
(I'll post the solution in a couple of days if I get no response :))
--- DayDream BBS/UNIX (Linux) 2.15
* Origin: The Night Express BBS, Copenhagen, nightexp.no-ip.org (2:236/100)