如何从 std::string 执行“getline”?

Posted

技术标签:

【中文标题】如何从 std::string 执行“getline”?【英文标题】:How to do "getline" from a std::string? 【发布时间】:2012-11-30 01:22:19 【问题描述】:

我有问题。我加载整个文件,然后通过它获取一些信息。然而,在地图格式中,信息可能有 0 或 20 条“线”。我需要知道如何通过 std::string 获取行。有一个函数(源流、目标字符串、十进制)但我需要(源字符串、目标字符串、十进制)。在 C++ 中无法在流中搜索(仅使用许多临时字符串并多次提取和插入,尚不清楚,我不想这样做)。所以我想知道如何从 std::string 获取行。

【问题讨论】:

【参考方案1】:

你似乎想要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不获取行? 因为这仍然是一个问题,因为我无法在流中搜索(这就是我想要不存在的字符串 getline 的原因)。 @user1873947 最简单的可能是检查你使用的字符串是否包含数字,然后跳过整个std::istringstream/std::getline位。

以上是关于如何从 std::string 执行“getline”?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 std::string 中删除 +

如何将 std::string_view 转换为双精度?

如何从字符串位置构造 CString/std::string

如何从 std::string 中获取 2 个字符并将其转换为 C++ 中的 int?

SWIG:如何包装 std::string&(通过引用传递的 std::string)

如何将 std::string 转换为 NSString?