Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::setbase

      From cppreference.com
      <cpp‎ |io‎ |manip
       
       
       
      Input/output manipulators
      Floating-point formatting
      Integer formatting
      Boolean formatting
      Field width and fill control
      Other formatting
      Whitespace processing
      Output flushing
      Status flags manipulation
      Time and money I/O
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Quoted manipulator
      (C++14)
       
      Defined in header<iomanip>
      /*unspecified*/ setbase(int base);

      Sets the numeric base of the stream. When used in an expressionout<< setbase(base) orin>> setbase(base), changes thebasefield flag of the streamout orin, depending on the value ofbase:

      Values ofbase other than 8, 10, or 16 resetbasefield to zero, which corresponds to decimal output and prefix-dependent input.

      Contents

      [edit]Parameters

      base - new value for basefield

      [edit]Return value

      An object of unspecified type such that

      • ifout is an object of typestd::basic_ostream<CharT, Traits>, the expressionout<< setbase(base)
        • has typestd::basic_ostream<CharT, Traits>&
        • has valueout
        • behaves as if it calledf(out, base)
      • ifin is an object of typestd::basic_istream<CharT, Traits>, the expressionin>> setbase(base)
        • has typestd::basic_istream<CharT, Traits>&
        • has valuein
        • behaves as if it calledf(in, base)

      where the functionf is defined as:

      void f(std::ios_base& str,int base){// set basefield    str.setf(base==8?std::ios_base::oct:        base==10?std::ios_base::dec:        base==16?std::ios_base::hex:std::ios_base::fmtflags(0),std::ios_base::basefield);}

      [edit]Example

      Run this code
      #include <iomanip>#include <iostream>#include <sstream> int main(){std::cout<<"Parsing string\"10 0x10 010\"\n"; int n1, n2, n3;std::istringstream s("10 0x10 010");     s>> std::setbase(16)>> n1>> n2>> n3;std::cout<<"hexadecimal parse: "<< n1<<' '<< n2<<' '<< n3<<'\n';     s.clear();    s.seekg(0);     s>> std::setbase(0)>> n1>> n2>> n3;std::cout<<"prefix-dependent parse: "<< n1<<' '<< n2<<' '<< n3<<'\n'; std::cout<<"hex output: "<< std::setbase(16)<<std::showbase<< n1<<' '<< n2<<' '<< n3<<'\n';}

      Output:

      Parsing string "10 0x10 010"hexadecimal parse: 16 16 16prefix-dependent parse: 10 16 8hex output: 0xa 0x10 0x8

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 183C++98setbase could only be used with streams
      of typestd::ostream orstd::istream
      usable with any
      character stream

      [edit]See also

      changes the base used for integer I/O
      (function)[edit]
      controls whether prefix is used to indicate numeric base
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/manip/setbase&oldid=159182"

      [8]ページ先頭

      ©2009-2025 Movatter.jp