所以你可以做这样的事情,例如:
std::string a("01:22:42.18");
std::stringstream ss(a);
int h, m, s, f;
ss >> h >> m >> s >> f;
通常需要格式化字符串"01 22 42 18"
。
你能直接修改当前的语言环境吗?
答案 0 :(得分:5)
我不认为你可以在不创建新语言环境的情况下更改默认分隔符,但这似乎是hackish。您可以使用的是使用getline和第三个参数指定分隔符字符,或者您可以读取分隔符而不对它们执行任何操作(例如,ss>>>>> d>> m >> d>> s>> d>> f)。
您也可以编写自己的解析类来处理为您分割字符串。或者更好的是,使用Boost boost::split中的String Algorithms Library。
答案 1 :(得分:3)
您可以通过创建一个ctype facet将:
分类为空格的语言环境来完成此操作。
Jerry Coffin explains how you can specify whitespace characters in this answer to another question
答案 2 :(得分:2)
int h, m, s, f;
sscanf(a.c_str(), "%d:%d:%d.%d", &h, &m, &s, &f);
*警告:对我和C ++来说已经有一段时间了
答案 3 :(得分:2)
char c;
if (!(ss >> h >> c) || c != ':') return;
if (!(ss >> m >> c) || c != ':') return;
if (!(ss >> s >> c) || c != '.') return;
if (!(ss >> f) || ss >> c) return;