首页 > 解决方案 > 如何在 std::getline 中自定义分隔符

问题描述

我正在解决hackerRank上的属性解析器,但我被分隔符困住了。我想从(“任何东西”)中获取一个元素,在这种情况下它会给我(任何东西),但是当我这样做时:

while (getline(ob, item, '""')) {//but its be true when i put single one ('"')
        std::cout << item << "\n";
    }

它给了我这个错误:

E0304 没有“getline”实例与参数列表匹配

标签: c++stringargumentsdelimiteristringstream

解决方案


正如@RetiredNinja 所说,您可以'\"'用作分隔符。代码可能如下所示:

#include <iostream>
#include <string>


int main()
{
    std::string str;
    while (std::getline(std::cin, str, '\"'))
        if (!str.empty() && str[0] != '(' && str[0] != ')')
            std::cout << '(' << str << ")\n";
}

您可以根据问题的规则更改代码。请注意,分隔符会"("首先给您,然后是实际的单词,依此类推。所以你必须过滤你不感兴趣的值。


推荐阅读