setw()和ofstream的问题
issue with setw() and ofstream
当我将setw()
与ofstream
一起使用时,它没有正确地写入文件。它跳过了许多行的输出,在Notepad++中,输出文件显示了许多NULL。但当我用"t"
尝试它时,效果很好。
你能解释一下原因吗?
#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 <<"nt"<<0<<"t"<<0<<"t"<<10000<<"t"<<6000;
}
return 0;
}
编辑:
我又测试了一点,发现问题是以下配置特有的。我使用virtualbox
在win7上使用ubuntu guest,并且我的程序试图使用ubuntu中安装的virtualbox
共享文件夹在主机操作系统驱动器上写入文件。
当我尝试在ubuntu中运行程序时,它运行得很好。此外,我尝试在我的个人电脑上做同样的事情,该电脑也有win7主机和ubuntu来宾。我在从win7到ubuntu的挂载驱动器上尝试了相同的程序,效果很好。
我想知道是不是因为我工作电脑上的设置。不管怎样,现在已经不重要了。但更多的见解是受欢迎的。
解决方案可能是确保您真正使用空格(或其他字符)来设置数据之间的宽度:
#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.cp-std=c++0x-Wall-o a&/a&;cat test.txt
::::::::::::::0::::::::::::::0::::::::::10000:::::::::::6000
::::::::::::::0::::::::::::::0::::::::::10000:::::::::::6000
::::::::::::::0::::::::::::::0::::::::::10000:::::::::::6000
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 标准::Ofstream Open的Klocwork问题
- 在C++中使用std::ofstream创建具有随机文件名的文件时出现问题
- 读取文件(ifstream)和写入文件(ofstream)-编码问题
- std::ofstream 变量定义问题
- 我在让非常基本的命令提示符文本处理器工作时遇到问题。ofstream() 的问题
- setw()和ofstream的问题
- mkdir和ofstream出现问题
- Ofstream trouble,我该如何解决这个问题?
- c++中使用ofstream创建文本文件的问题
- ostream/ofstream继承问题
- 使用ifstream和ofstream序列化二进制数据时出现问题