Saturday, December 6, 2014

stringstream in c++



Program 20

#include 
#include
#include 
#include 
void redirect(std::ostream&,const std::string&);
int main()
{
    std::cout << "first line" << std::endl;
    redirect(std::cout, "redirect.txt"); 
    std::cout << "last line" << std::endl;
}
void redirect(std::ostream& strm, const std::string& filename)
{
    std::ofstream file(filename.c_str());
    std::streambuf* strm_puffer = strm.rdbuf();
    strm.rdbuf(file.rdbuf());
    file << "line is directly written to the file" << std::endl;
    strm  << "line is written to the redirected stream" << std::endl;
     strm.rdbuf(strm_puffer);
}  

Program 21

#include 
#include
#include 
int main()
{
    std::ostringstream os;
    os << "dec: " << 15 << std::hex << " hex: " << 15 << std::endl;
    std::cout << os.str() << std::endl;
    os << "float: " << 4.67 << std::endl;
    std::cout << os.str() << std::endl;
    os.seekp(0);
    os << "oct: " << std::oct << 15;
    std::cout << os.str() << std::endl;
}

Program 22

#include 
 #include
#include 
int main()
{
    std::string s = "Pi: 3.1415";
    std::istringstream is(s);
    std::string name;
    double value;
    is >> name >> value;
    std::cout << "Name: " << name << std::endl;
    std::cout << "Value: " << value << std::endl;
}

Program 23

#include 
#include
#include
template
targettype lexical_cast(sourcetype in)
{
    std::stringstream interpreter;
    targettype out;
    if(!(interpreter << in) || !(interpreter >> out) ||
       !(interpreter >> std::ws).eof()) 
    {
           throw "bad lexical cast";
    }
    return out;
}

Program 24

#include 
#include
#include
template
targettype lexical_cast(sourcetype in)
{
    std::stringstream interpreter;
    targettype out;
    if(!(interpreter << in) || !(interpreter >> out) ||
       !(interpreter >> std::ws).eof()) 
     {
           throw "bad lexical cast";
    }
    return out;
}

No comments:

Post a Comment