输入流操作器

std::ws - 消耗输入流中的前导空格。它与 std::skipws 不同。

#include <sstream>
...

std::string str;
std::istringstream("  \v\n\r\t    Wow!There   is no whitespaces!") >> std::ws >> str;
std::cout << str;
// Output: Wow!There   is no whitespaces!

std::get_money(mon[, intl]) [C++ 11]。在表达式中,in >> std::get_money(mon, intl) 将字符输入解析为货币值,由 in 中当前所在的语言环境的 std::money_get facet 指定,并将值存储在 monlong doublestd::basic_string 类型)中。如果 intltrue,则机械手期望所需的国际货币字符串,否则期望可选的货币符号。

#include <sstream>
#include <locale>
...
 
std::istringstream in("$1,234.56 2.22 USD  3.33");
long double v1, v2;
std::string v3;

in.imbue(std::locale("en_US.UTF-8"));
in >> std::get_money(v1) >> std::get_money(v2) >> std::get_money(v3, true);
if (in) {
    std::cout << std::quoted(in.str()) << " parsed as: "
              << v1 << ", " << v2 << ", " << v3 << '\n';
}
// Output:
// "$1,234.56 2.22 USD  3.33" parsed as: 123456, 222, 333

std::get_time(tmb, fmt) [C++ 11] - 解析存储在指定格式 fmttmb 中的日期/时间值。

tmb - 指向将存储结果的 const std::tm*对象的有效指针。
fmt - 指向以空值终止的字符串 const CharT*的指针,指定转换格式。

#include <sstream>
#include <locale>
...

std::tm t = {};
std::istringstream ss("2011-Februar-18 23:12:34");

ss.imbue(std::locale("de_DE.utf-8"));
ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S");
if (ss.fail()) {
    std::cout << "Parse failed\n";
}
else {
    std::cout << std::put_time(&t, "%c") << '\n';
}
// Possible output:
// Sun Feb 18 23:12:34 2011

有关更多信息,请参阅上面的链接。