zoukankan      html  css  js  c++  java
  • 应用fstream格式化输出

    我举一个我应用的例子

                            
                             file.open("shoroud.jrf" ,ios_base::trunc); //打开文件,清空文件内容
    
                             if(!file.good())
                             {
                                         printf("Cannot open the file
    " );
                                return;
                             }
                            
                             file<<"ic_curve point CURVES crv.00 {" <<endl;
                             file.precision(8);        
                             file.flags(ios::left|ios::fixed);
                             file.fill('0' );
                             for(int i=0;i<shroudX.size();i++){
    
                                         file<<"{    " ;
                                         file.width(14);
                                         file<<shroudX[i];
                                         file<<"    " ;
                                         file.width(14);
                                         file<<0;
                                         file<<"    " ;
                                         file.width(14);
                                         file<<shroudY[i]<<"}" <<endl;
    
                             }
                             file<<"}" <<endl;
                             file<<"ic_uns_subset_delete {}" ;
                             file.close();
    

    file有4个函数要注意:

    1.                         file.precision(8);        
    2.                         file.flags(ios::left|ios::fixed);
    3.                         file.fill('0' );
    4.                         file.width(14);
    

    前三个函数是一次设定始终有效,而第四个2只对下一次输入有效。依次解释这四个函数的意义:
    file.precision(3); 设定精度,小数点后有效数的位数,若输出0.32456,结果为0.324,;若输出0.3,结果为0.3。也就是对缺少的位数该函数不会去补充;
    file.fill('0' );该函数的作用就是把空出来的位数用某一字符来补充。但注意仅设置precision的情况下是不会补充的。因为precision只负责精度
    ,而不会限定具体位数。
    file.width(14);则是限定输出的位数。但在系统优先满足精度,输出位数可能无法保证。例如321.45678,若设定8位宽度,5位精度,最终结果是321.45678。即优先满足精度要求,其次满足宽度要求。同样上例中若精度为2位,结果为321.45.剩下的可以用fill来补充
    但设定以上三种条件也无法得出满意的结果。因为系统默认数字右对齐,也就是填充字符会填充在数字的左边!此时必须进步设定file.flags(ios::left|ios::fixed);其中ios::left是令字符左对齐,而ios::fixed,该参数指定的动作是以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧;

  • 相关阅读:
    linux服务器时间同步
    07_DICTIONARY_ACCESSIBILITY
    Oracle监听静态注册和动态注册
    Oracle安装基本步骤
    笔试面试(2)阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
    Global and Local Coordinate Systems
    齐次坐标(Homogeneous Coordinates)
    朴素贝叶斯分类器的应用
    图像数据到网格数据-1——MarchingCubes算法
    PCL源码剖析之MarchingCubes算法
  • 原文地址:https://www.cnblogs.com/sgdd123/p/7875200.html
Copyright © 2011-2022 走看看