如何从std::string中使用"getline"函数?

22
我有一个问题。我加载整个文件,然后通过getline逐行获取一些信息。但是,在map格式中可能有0或20个包含信息的“行”。我需要知道如何从std :: string中使用getline。有一个函数(源流,目标字符串,十进制数),但我需要(源字符串,目标字符串,十进制数)。在C++中无法在流中搜索(仅使用许多临时字符串进行提取和插入,这很不清晰,我不想以那种混乱的方式完成)。因此,我想知道如何从std :: string中使用getline。
谢谢。
1个回答

33

你似乎需要 std::istringstream,它在头文件<sstream>中:

std::string some_string = "...";

std::istringstream iss(some_string);

std::string line;
while (std::getline(iss, line))
{
    // Do something with `line`
}

谢谢。与此相关的简单问题。如何使getline在流中未找到小数时不获取行? - user1873947
因为这仍然是一个问题,我无法在流中搜索(这就是我想要的不存在的字符串getline)。 - user1873947
1
@user1873947 最简单的方法可能是检查您使用的字符串是否包含数字,然后跳过整个 std::istringstream/std::getline 部分。 - Some programmer dude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接