web-dev-qa-db-fra.com

Détecter quand à la fin d'un stringstream

J'essaie d'écrire une fonction qui détectera quand je suis presque à la fin d'un flux de chaînes, mais cela ne semble pas fonctionner.

Voici du code:

std::string path(1.2.3);
int number;
std::stringstream ss(path);
while (!ss.eof()) {
    if (ss.peek() != '.') {
        ss >> number;
        if (ss.tellg() == path.length()) {
            std::cout << "Last one: " << number;
        } else {
            std::cout << number;
        }
    } else { ss.get(); }
}

J'ai essayé d'utiliser ss.tellg () == path.length (), mais cela ne fonctionne pas. Quelqu'un a-t-il une alternative?

17
JNevens

Je l'ai compris ..

std::string path(1.2.3);
int number;
std::stringstream ss(path);
while (!ss.eof()) {
    if (ss.peek() != '.') {
        ss >> number;
        if (ss.tellg() == -1) {
            std::cout << "Last one: " << number;
        } else {
            std::cout << number;
        }
    } else { ss.get(); }
}
16
JNevens