#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string test(const string &s, char delim, int parseIndex ){
stringstream ss(s);
string parsedStr = "";
for( int i = 0; i < (parseIndex+1); i++ ) getline(ss, parsedStr, delim);
return parsedStr;
}
int main() {
stringstream ss("something without delimiter");
string s1;
getline(ss,s1,';');
cout << "'" << s1 << "'" << endl; //no delim
cout << endl;
string s2 = "321;;123";
cout << "'" << test(s2,';',0) << "'" << endl; //classic
cout << "'" << test(s2,';',1) << "'" << endl; //nothing before
cout << "'" << test(s2,';',2) << "'" << endl; //no delim at the end
cout << "'" << test(s2,';',3) << "'" << endl; //this shouldn't be there
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpzdHJpbmcgdGVzdChjb25zdCBzdHJpbmcgJnMsIGNoYXIgZGVsaW0sIGludCBwYXJzZUluZGV4ICl7CiAgICBzdHJpbmdzdHJlYW0gc3Mocyk7CiAgICBzdHJpbmcgcGFyc2VkU3RyID0gIiI7CgkKCWZvciggaW50IGkgPSAwOyBpIDwgKHBhcnNlSW5kZXgrMSk7IGkrKyApIGdldGxpbmUoc3MsIHBhcnNlZFN0ciwgZGVsaW0pOwoJCglyZXR1cm4gcGFyc2VkU3RyOwp9CgppbnQgbWFpbigpIHsKCXN0cmluZ3N0cmVhbSBzcygic29tZXRoaW5nIHdpdGhvdXQgZGVsaW1pdGVyIik7CglzdHJpbmcgczE7CglnZXRsaW5lKHNzLHMxLCc7Jyk7Cgljb3V0IDw8ICInIiA8PCBzMSAgPDwgIiciIDw8IGVuZGw7IC8vbm8gZGVsaW0KCWNvdXQgPDwgZW5kbDsKCQoJc3RyaW5nIHMyID0gIjMyMTs7MTIzIjsKCWNvdXQgPDwgIiciIDw8IHRlc3QoczIsJzsnLDApIDw8ICInIiA8PCBlbmRsOyAvL2NsYXNzaWMKCWNvdXQgPDwgIiciIDw8IHRlc3QoczIsJzsnLDEpIDw8ICInIiA8PCBlbmRsOyAvL25vdGhpbmcgYmVmb3JlCgljb3V0IDw8ICInIiA8PCB0ZXN0KHMyLCc7JywyKSA8PCAiJyIgPDwgZW5kbDsgLy9ubyBkZWxpbSBhdCB0aGUgZW5kCgljb3V0IDw8ICInIiA8PCB0ZXN0KHMyLCc7JywzKSA8PCAiJyIgPDwgZW5kbDsgLy90aGlzIHNob3VsZG4ndCBiZSB0aGVyZQoJY291dCA8PCBlbmRsOwoJCglyZXR1cm4gMDsKfQ==