我需要对空格、制表符和换行符分隔符的支持。我可以用sscanf做到这一点,但我更喜欢坚持使用字符串而不是 char*s。
有没有办法在 C++11 中完成这个?
这个简单的程序怎么样:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
int main()
{
std::vector<std::string> v;
std::istringstream is{"example input\ttext\nhere"};
std::copy(std::istream_iterator<std::string>(is),
std::istream_iterator<std::string>(),
std::back_inserter(v));
for (const auto& s : v)
std::cout << s << '\n';
}
该程序的输出是
例子 输入 文本 这里
如您所见,它使用任何空格作为分隔符。您当然也可以使用输入运算符,例如
std::string s;
while (is >> s)
v.push_back(s);
上面的代替std::copy
将产生相同的结果。