C ++为std :: ofstream

时间:2017-08-10 09:37:29

标签: c++ ofstream

我需要将6位精度的float类型写入文件。 此代码无法正常工作:

int main() {

    std::ofstream ofs("1.txt", std::ofstream::out);
    if (ofs.is_open() == false) {
        std::cerr << "Couldn't open file... 1.txt" << std::endl;
        return -1;
    }

    time_t t_start, t_end;
    time(&t_start);
    sleep(1);
    time(&t_end);
    float elapsed = difftime(t_end, t_start);   
    ofs<<"Elapsed time= " << std::setprecision(6) <<elapsed<< "(s)"<<std::endl;        
    ofs.close();
    return 0;
}

输出:

Elapsed time= 1(s)

任何建议?

2 个答案:

答案 0 :(得分:1)

您必须使用std::fixedstd::setprecision

ofs << "Elapsed time= " << std::fixed << std::setprecision(6)
    << elapsed << "(s)"
    << std::endl;

进一步difftime()返回一个double而不是float。

  

double difftime(time_t time1, time_t time0);

     

difftime()函数返回时间 time1 和时间 time0 之间经过的秒数,表示为 double 。< / p>

答案 1 :(得分:1)

如果您需要std::fixed,则需要将0.000000插入流中:

ofs << "Elapsed time = "
    << std::setprecision(6) << std::fixed << elapsed << " (s)"
    << std::endl;

这会给你:

Elapsed time = 0.000000 (s)