summaryrefslogtreecommitdiff
path: root/ccc/split.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ccc/split.cc')
-rw-r--r--ccc/split.cc55
1 files changed, 55 insertions, 0 deletions
diff --git a/ccc/split.cc b/ccc/split.cc
new file mode 100644
index 0000000..e01ad64
--- /dev/null
+++ b/ccc/split.cc
@@ -0,0 +1,55 @@
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <vector>
+
+using namespace std;
+
+
+int main(void)
+{
+ string s("a\tb\tc\td");
+ string::iterator it = s.begin();
+ char d = '\t';
+ string tmp;
+ size_t parts = 4;
+ size_t c = 0;
+ while(true) {
+ if (parts > 0 && c == parts-1) {
+ while(it != s.end()) {
+ tmp += *it;
+ it++;
+ }
+ cout << tmp << endl;
+ break;
+ }
+ if (it == s.end()) { cout << tmp << endl; break; }
+ if (*it != d) tmp += *it;
+ else {
+ cout << tmp << endl;
+ tmp.clear();
+ c++;
+ }
+ it++;
+ }
+
+ cout << "---" << endl;
+
+ stringstream ss(s);
+ string si;
+ parts = 0;
+ c = 0;
+
+ while(true)
+ {
+ if (parts > 0 && c == parts-1) {
+ getline(ss, si);
+ cout << si << endl;
+ break;
+ }
+ if(!getline(ss, si, '\t')) break;
+ cout << si << endl;
+ c++;
+ }
+}
+