⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
/*=============================================================================    Copyright (C) 1999-2003 Jaakko Jarvi    Distributed under the Boost Software License, Version 1.0. (See accompanying     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)==============================================================================*/#include <boost/detail/lightweight_test.hpp>#include <boost/fusion/container/vector/vector.hpp>#include <boost/fusion/container/generation/make_vector.hpp>#include <boost/fusion/sequence/comparison/equal_to.hpp>#include <boost/fusion/sequence/io/out.hpp>#include <boost/fusion/sequence/io/in.hpp>#include <fstream>#include <iterator>#include <algorithm>#include <string>#if defined BOOST_NO_STRINGSTREAM# include <strstream>#else# include <sstream>#endifusing boost::fusion::vector;using boost::fusion::make_vector;using boost::fusion::tuple_close;using boost::fusion::tuple_open;using boost::fusion::tuple_delimiter;#if defined BOOST_NO_STRINGSTREAM  using std::ostrstream;  using std::istrstream;  typedef ostrstream useThisOStringStream;  typedef istrstream useThisIStringStream;#else  using std::ostringstream;  using std::istringstream;  typedef ostringstream useThisOStringStream;  typedef istringstream useThisIStringStream;#endifusing std::endl;using std::ofstream;using std::ifstream;using std::string;intmain(){    using boost::fusion::tuple_close;    using boost::fusion::tuple_open;    using boost::fusion::tuple_delimiter;    useThisOStringStream os1;    // Set format [a, b, c] for os1    os1 << tuple_open('[');    os1 << tuple_close(']');    os1 << tuple_delimiter(',');    os1 << make_vector(1, 2, 3);    BOOST_TEST (os1.str() == std::string("[1,2,3]") );    {        useThisOStringStream os2;        // Set format (a:b:c) for os2;        os2 << tuple_open('(');        os2 << tuple_close(')');        os2 << tuple_delimiter(':');        os2 << make_vector("TUPU", "HUPU", "LUPU", 4.5);        BOOST_TEST (os2.str() == std::string("(TUPU:HUPU:LUPU:4.5)") );    }    // The format is still [a, b, c] for os1    os1 << make_vector(1, 2, 3);    BOOST_TEST (os1.str() == std::string("[1,2,3][1,2,3]") );    std::ofstream tmp("temp.tmp");    tmp << make_vector("One", "Two", 3);    tmp << tuple_delimiter(':');    tmp << make_vector(1000, 2000, 3000) << endl;    tmp.close();    // When reading tuples from a stream, manipulators must be set correctly:    ifstream tmp3("temp.tmp");    vector<string, string, int> j;    tmp3 >> j;    BOOST_TEST (tmp3.good() );    tmp3 >> tuple_delimiter(':');    vector<int, int, int> i;    tmp3 >> i;    BOOST_TEST (tmp3.good() );    tmp3.close();    // reading vector<int, int, int> in format (a b c);    useThisIStringStream is("(100 200 300)");    vector<int, int, int> ti;    BOOST_TEST(bool((is >> ti) != 0));    BOOST_TEST(ti == make_vector(100, 200, 300));    // Note that strings are problematic:    // writing a tuple on a stream and reading it back doesn't work in    // general. If this is wanted, some kind of a parseable string class    // should be used.    return boost::report_errors();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -