Quoted Strings Library Proposal
知らなかったので自分用メモ。
#include<sstream> #include<string> #include<iomanip> #include<cassert> int main() { using namespace std::string_literals; std::stringstream ss; std::string original="foolish me"; { std::string round_trip; ss<<std::quoted(original); ss>>std::quoted(round_trip); assert(original==round_trip); // assert will not fire } { ss.str(""); ss.clear(std::stringstream::goodbit); original="\"She said \\\"Hi!\\\"\""; ss<<std::quoted("She said \"Hi!\""); assert(original==ss.str()); } }
スペース、バックスラッシュ、ダブルクオートなどを入力する場合、文字列が区切られてしまったり、バックスラッシュで文字である事を示さなければならなかったが、quotedマニピュレータによって上記のように書く事ができるようになる。
C++14時点でiomanipに定義されていたが、C++1zではiostreamにも入るとのこと。