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,该参数指定的动作是以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧;

  • 相关阅读:
    Insus Meta Utility
    The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
    Insus Binary Utility
    asp.net实现文件下载功能
    Column 'Column Name' does not belong to table Table
    程序已被编译为DLL,怎样去修改程序功能
    如何在Web网站实现搜索功能
    如何把数据流转换为二进制字符串
    Asp.net更新文件夹的文件
    如何显示中文月份
  • 原文地址:https://www.cnblogs.com/sgdd123/p/7875200.html
Copyright © 2011-2022 走看看