web-dev-qa-db-ja.com

文字列ストリームの終わりを検出する

文字列ストリームのほぼ終わりに達したときにそれを検出する関数を記述しようとしていますが、機能していないようです。

ここにいくつかのコードがあります:

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()を使ってみましたが、うまくいきません。誰かが代わりを持っていますか?

17
JNevens

私はそれを考え出した..

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