Обнаруживать, когда в конце строкового потока

Я пытаюсь написать функцию, которая будет обнаруживать, когда я почти в конце строки, но она не работает.

Вот код:

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(); }
}

Я попытался использовать ss.tellg() == path.length(), но это не работает. Есть ли у кого-нибудь альтернатива?

Ответ 1

Я понял это.

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(); }
}

Ответ 2

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(); }
}