Angenommen, ich lese Token von einem std::istream
. Wie kann ich auf einfache Weise wissen, wie viele Zeilenumbrüche aus dem Stream gelesen wurden? Dies dient dem Zweck der Fehlermeldung in einem Parser. Ich möchte nicht std::getline
zum Lesen der Eingabe verwenden.
Hier ist ein Testfall. Ich suche nach etwas, das funktional ähnlich wie GetLineNumber
ist, das in diesem Fall die Zeilennummer des zuletzt gelesenen Tokens zurückgeben würde.
std::stringstream ss;
ss << "1 \n 2 \n 3 \n";
int x;
while (ss >> x) {
std::cout << "Zeile " << GetLineNumber(ss) << ": " << x << std::endl;
}
Die Ausgabe dieses Beispiels sollte sein:
Zeile 1: 1
Zeile 2: 2
Zeile 3: 3