我有一个形式为std :: string str =" 1001 0104 2325 9999"我需要将整数空格分隔的这四个子串存储起来。是否有一种优雅的方式来执行此任务,就像在C中使用字符串(使用sscanf)?这不是一个家庭作业问题。
答案 0 :(得分:1)
最干净的方法可能是使用带有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来执行此操作(至少在内存服务时)。