非常奇怪的弦乐和std :: getline行为

Very strange stringstream and std::getline behaviour

本文关键字:std getline 行为 非常      更新时间:2023-10-16

我正在用引擎中的地图加载错误进行战斗,最后我找到了它。但是,弦乐和getline似乎有问题...最小代码:

#include <string>
#include <iostream>
#include <sstream>
int main(int argc, char **argv)
{
    std::string text = "1!2!6|6|5|";
    std::stringstream buffer;
    buffer << text; // insert to buffer
    std::string temp;
    buffer >> temp; // extract
    buffer << temp; // then insert again (i need it in my code to count characters)
    // and I can't count it before, as in my code the buffer is filled from file
    std::string loaded;
    std::getline(buffer, loaded, '!'); //should instert "1" to loaded
    std::cout << loaded; //and it displays nothing, debugger shows loaded is empty
}

我做错了什么还是一个错误?我正在使用G 4.7 C 11。

在这种情况下,用于从Stringstream中提取字符串,您可能想要:

temp = buffer.str();

而不是:

buffer >> temp;

请参阅:提取格式化(解释)数据与stringstream.str()