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

📄 a_printf.cpp

📁 一个不错
💻 CPP
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2006  Compare the difference and use in printf/sscanf fassion  Build: make a_printf*/#include "../src/wy_uty.h"#include <cstdio>       // printf/sscanf is used for comparisonstatic void sim_printf(void){ WyRet r; WyStr str; // printf("%d",val) {  int val=1289;  std::printf("%d\n",val);   // for comparison  str=Wy::wrd(val);  Wy::cout << str << " --- " << val << "--\n"; } // printf("%5d",val) {  int val=1289;  std::printf("%5d\n",val);   // for comparison  str=Wy::wrd(val);  if(str.size()<5) {    if((r=str.insert(0,5-str.size(),' '))!=Ok) {      WY_THROW(r);    }  }  Wy::cout << str << " --- " << val << "--\n"; } // printf("%-6d",val) {  int val=-189;  std::printf("%-6d\n",val);   // for comparison  str=Wy::wrd(val);  if(str.size()<6) {    if((r=str.append(6-str.size(),' '))!=Ok) {      WY_THROW(r);    }  }  Wy::cout << str << " --- " << val << "--\n"; } // printf("%06d",val) {  int val=189;  std::printf("%06d\n",val);   // for comparison  str=Wy::wrd(val);  if(str.size()<6) {    if((r=str.insert(0,6-str.size(),'0'))!=Ok) {      WY_THROW(r);    }  }  Wy::cout << str << " --- " << val << "--\n"; } // printf("%.2f",val) {  float val=189.189;  std::printf("%.2f\n",val);   // for comparison  str=Wy::wrd(val,10,2);  Wy::cout << str << " --- " << val << "--\n"; } // printf("%.2g",val) {  float val=189.189;  std::printf("%.2g\n",val);   // for comparison  str=Wy::wrd(val,0,2);  Wy::cout << str << " --- " << val << "--\n"; }};static void sim_sscanf(void){ const char Input1[]=" 12.34	 345.67E-1	 78.901e1 555"; WyRet r;  // sscanf("%f %f %lf %d",..)  {    const WyCSeg txt=Input1;    size_t fidx=0;    float value_f1,value_f2;    double value_lf;    int   value_d;    // This loop is to use break to exit the block to     // simulate sscanf (loop exactly once)    //    do {      // convert the 1st word and print the result      if((r=Wy::_scanum(value_f1,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      Wy::cout << value_f1 << ", ";      // convert the 2nd word and print the result      if((r=Wy::_scanum(value_f2,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      Wy::cout << value_f2 << ", ";      // convert the 3rd word and print the result      if((r=Wy::_scanum(value_lf,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      Wy::cout << value_lf << ", ";      // convert the 4th word and print the result      if((r=Wy::_scanum(value_d,fidx,txt))!=Ok) {        WY_HERE(r);        break;      }      Wy::cout << value_d << "\n";      r=Ok;    } while(false);     if(r!=Ok) {      WY_THROW(r);    }        // compare by printing the result from std::sscanf    if(std::sscanf(txt.begin(),"%f %f %lf %d",                   &value_f1,&value_f2,&value_lf,&value_d)!=4) {      WY_THROW( WyRet() );    }    Wy::cout << value_f1 << ", " << value_f2 << ", "             << value_lf << ", " << value_d << '\n';  }};int main(void)try { sim_printf(); sim_sscanf(); return(0);}catch(const WyRet& e) { Wy::cerr << Wy::wrd(e) << '\n'; throw;}catch(...) { Wy::cerr << "unknown throw type\n"; throw;};

⌨️ 快捷键说明

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