#include <iostream>
#include <limits>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
struct Type {
string line;
int index;
};
int main() {
istringstream f("key = -2\nkey = -1\nkey = 0\nÄèîpg\nkey = 2");
string line;
int lineNumber = 0;
const auto line1 = 20;
const auto line2 = 6;
size_t pos;
vector<Type> linesVector;
if (f.good()){
while (getline(f, line)) {
lineNumber++;
if ((lineNumber>= line1 - 20) && (lineNumber<= line2)){
pos = line.find("key = 0");
if (pos != string::npos){
if(!f.ignore(numeric_limits<std::streamsize>::max(), '\n')) {
break;
}
++lineNumber;
std::cout << "skip the line" << endl;
}
else{
Type v;
v.line= line;
v.index = lineNumber;
linesVector.push_back(v);
}
}
}
}
for(const auto& i : linesVector) cout << i.index << ": " << i.line << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVHlwZSB7CglzdHJpbmcgbGluZTsKCWludCBpbmRleDsKfTsKCmludCBtYWluKCkgewoJaXN0cmluZ3N0cmVhbSBmKCJrZXkgPSAtMlxua2V5ID0gLTFcbmtleSA9IDBcbsOEw6jDrnBnXG5rZXkgPSAyIik7CglzdHJpbmcgbGluZTsKCWludCBsaW5lTnVtYmVyID0gMDsKCWNvbnN0IGF1dG8gbGluZTEgPSAyMDsKCWNvbnN0IGF1dG8gbGluZTIgPSA2OwoJc2l6ZV90IHBvczsKCXZlY3RvcjxUeXBlPiBsaW5lc1ZlY3RvcjsKCQoJaWYgKGYuZ29vZCgpKXsKCSAgICB3aGlsZSAoZ2V0bGluZShmLCBsaW5lKSkgewoJICAgICAgICBsaW5lTnVtYmVyKys7CgkgICAgICAgIGlmICgobGluZU51bWJlcj49IGxpbmUxIC0gMjApICYmIChsaW5lTnVtYmVyPD0gbGluZTIpKXsKCSAgICAgICAgICAgIHBvcyA9IGxpbmUuZmluZCgia2V5ID0gMCIpOwoJICAgICAgICAgICAgaWYgKHBvcyAhPSBzdHJpbmc6Om5wb3MpewoJCQkJCWlmKCFmLmlnbm9yZShudW1lcmljX2xpbWl0czxzdGQ6OnN0cmVhbXNpemU+OjptYXgoKSwgJ1xuJykpIHsKCQkJCQkgICAgYnJlYWs7CgkJCQkJfQoJCQkJICAgICsrbGluZU51bWJlcjsKCSAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgInNraXAgdGhlIGxpbmUiIDw8IGVuZGw7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlewoJICAgICAgICAgICAgICAgIFR5cGUgdjsKCSAgICAgICAgICAgICAgICB2LmxpbmU9IGxpbmU7CgkgICAgICAgICAgICAgICAgdi5pbmRleCA9IGxpbmVOdW1iZXI7CgkgICAgICAgICAgICAgICAgbGluZXNWZWN0b3IucHVzaF9iYWNrKHYpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJfQoKCWZvcihjb25zdCBhdXRvJiBpIDogbGluZXNWZWN0b3IpIGNvdXQgPDwgaS5pbmRleCA8PCAiOiAiIDw8IGkubGluZSA8PCBlbmRsOwogfQ==