问题
在c++中使用setw()
输出类似表格的样式,在控制台中(黑框框中)显示正常。
如下图
但是输出到txt却出现不对齐
如下图
以下是用于显示表格的部分代码
cout<<setw(5)<<"状态"<<"|";
cout<<setw(25)<<"ACTION|";
cout<<setw(15)<<"GOTO"<<endl;
cout<<setw(5)<<""<<"|";
cout<<setw(5)<<"a|"<<setw(5)<<"b|"<<setw(5)<<"c|"<<setw(5)<<"d|"<<setw(5)<<"#|"
<<setw(5)<<"A|"<<setw(5)<<"B|"<<setw(5)<<"E|"<<endl;
for(int i=0;i<num;i++)
{
cout<<setw(5)<<i<<"|";
for(int j=0;j<line-1;j++)
{
cout<<setw(5)<<matrix[i][j]+"|";
}
cout<<endl;
}
ofstream out("output.txt");
out<<"LR(0)的分析表如下"<<endl<<endl;
out<<setw(5)<<"状态"<<"|";
out<<setw(25)<<"ACTION|";
out<<setw(15)<<"GOTO"<<endl;
out<<setw(5)<<""<<"|";
out<<setw(5)<<"a|"<<setw(5)<<"b|"<<setw(5)<<"c|"<<setw(5)<<"d|"<<setw(5)<<"#|"
<<setw(5)<<"A|"<<setw(5)<<"B|"<<setw(5)<<"E|"<<endl;
for(int i=0;i<num;i++)
{
out<<setw(5)<<i<<"|";
for(int j=0;j<line-1;j++)
{
out<<setw(5)<<matrix[i][j]+"|";
}
out<<endl;
}
解决办法
仔细查看txt文本,发现不对齐的原因是空格字符的宽度较短。只需要在txt中把字体改成统一宽度的就行了,比如Fixedsys
这种字体