#define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; void strip(istream & i, ostream & o) { unsigned char lin[2048]; unsigned char* c; while (i.good()) { bool instring = false; bool wasspace = false; bool full = false; i.getline((char *)lin, 2048); for (c = lin; isspace(*c); c++); // salta spazi iniziali for (; *c; c++) { full = true; if (*c == '/' && *(c+1) == '/') { o << '\n'; break; } if (*c == '#') { o << *c; while (isspace(*(++c))); // c--; } else if (*c == '"' || *c == '\'') instring = !instring; if (isspace(*c)) { if (!instring) { if (wasspace && *c != '\n') continue; wasspace = true; } } else wasspace = false; o << *c; } if (full) o << '\n'; } } int main(int argc, char ** argv) { // cerr << "Strip 1.2 - White spaces filter by Guy 2012" << endl; if (argc == 1) strip(cin, cout); else { ifstream fin(argv[1]); if (argc == 2) strip(fin, cout); else { ofstream fout(argv[2]); strip(fin, fout); } } return 0; }