首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发出setw()和ofstream

发出setw()和ofstream
EN

Stack Overflow用户
提问于 2012-03-28 22:35:44
回答 1查看 2.2K关注 0票数 0

当我将setw()ofstream一起使用时,它没有正确地写入文件。它跳过了许多输出行,在Notepad++中,输出文件显示了大量的NULL。但是当我用"\t"来尝试它时,它工作得很好。

你能解释一下为什么吗?

代码语言:javascript
复制
#include<fstream>
#include<iomanip>
using namespace std;
int main(){

    ofstream myfile;
    myfile.open ("test.txt");

    for(int i=0;i<300;i++){
        myfile <<"\n"<<setw(15)<<0<<setw(15)<<0<<setw(15)<<10000<<setw(15)<<6000;
        //myfile <<"\n\t"<<0<<"\t"<<0<<"\t"<<10000<<"\t"<<6000;
    }
    return 0;
}

编辑:

我进行了更多的测试,发现问题是特定于下面的配置的。我使用ubuntu客户在win7上使用virtualbox,我的程序试图使用在ubuntu上挂载的virtualbox共享文件夹在主机OS驱动器上编写文件。

当我试图在ubuntu内部运行程序时,它运行得很好。此外,我也尝试在我的个人计算机上做同样的事情,它也有win7主机和ubuntu来宾。我在一个从win7到ubuntu的挂载驱动器上尝试了相同的程序,它工作得很好。

我想知道是不是因为我工作电脑上的设置。不管怎么说,现在不重要了。但更多的见解是值得欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2016-06-24 09:27:42

解决方案可能是确保确实使用空格(或其他字符)来设置数据之间的宽度:

代码语言:javascript
复制
#include<fstream>
#include<iomanip>
using namespace std;
int main(){
    char a='î';
    int  b=15;
    ofstream myfile;
    myfile.open ("test.txt");

    for(int i=0;i<3;i++){
           myfile <<'\n'       <<setfill(a)<<setw(b)
                  <<0          <<setfill(a)<<setw(b)
                  <<0          <<setfill(a)<<setw(b)
                  <<10000      <<setfill(a)<<setw(b)
                  <<6000       ;
    }
    myfile <<'\n';
    return 0;
}

给出

$ g++ a.cpp -std=c++0x -Wall -o a && ./a & cat test.txt

代码语言:javascript
复制
::::::::::::::0::::::::::::::0::::::::::10000:::::::::::6000
::::::::::::::0::::::::::::::0::::::::::10000:::::::::::6000
::::::::::::::0::::::::::::::0::::::::::10000:::::::::::6000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9916661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档