gpt4 book ai didi

c++ - sscanf 等价于 std::string

转载 作者:行者123 更新时间:2023-11-28 06:50:03 25 4
gpt4 key购买 nike

我有一个 std::string str = "1001 0104 2325 9999"形式的字符串,我需要将这四个由空格分隔的子字符串存储在整数中。有没有一种优雅的方法来完成这个任务,就像 C 中的字符串一样(使用 sscanf)?这不是一道作业题。

最佳答案

最干净的方法可能是使用带有 istream_iterator 的字符串流,如下所示:

std::string str = "1001 0104 2325 9999";

std::istringstream in(str);

std::vector<int> numbers {
std::istream_iterator<int>(in),
std::istream_iterator<int>()
};

// just to show what we did:
for (int i : numbers)
std::cout << i << "\n";

请注意,您提供的输入有一点歧义:不清楚您是希望 0104 是十进制还是八进制(因为前导零会导致它被解释为源代码)。我上面写的代码将它解释为十进制。如果您希望前导 0 表示八进制(前导 0x 表示十六进制),您可以通过将转换的基数设置为0.

关于c++ - sscanf 等价于 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124583/

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