gpt4 book ai didi

c++ - 如何让 std::istringstream 将给定字符视为空格?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:11:13 25 4
gpt4 key购买 nike

使用 std::istringstream 可以很容易地读取由空格分隔的单词。但是要解析以下行,我需要将字符 / 视为空格。

f 104/387/104 495/574/495 497/573/497

如何读取由斜杠或空格分隔的值?

最佳答案

一种方法是定义一个 ctype facet,将 / 分类为空白:

class my_ctype : public std::ctype<char> {
public:
mask const *get_table() {
static std::vector<std::ctype<char>::mask>
table(classic_table(), classic_table()+table_size);
table['/'] = (mask)space;
return &table[0];
}
my_ctype(size_t refs=0) : std::ctype<char>(get_table(), false, refs) { }
};

从那里,使用该 ctype 方面为流注入(inject)语言环境,然后读取单词:

int main() { 
std::string input("f 104/387/104 495/574/495 497/573/497");
std::istringstream s(input);
s.imbue(std::locale(std::locale(), new my_ctype));

std::copy(std::istream_iterator<std::string>(s),
std::istream_iterator<std::string>(),
std::ostream_iterator<std::string>(std::cout, "\n"));
}

关于c++ - 如何让 std::istringstream 将给定字符视为空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15707309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com