C ++输出格式错误

时间:2012-11-16 02:08:10

标签: c++ text file-io formatting

当我遇到这个奇怪的错误时,我正在研究C ++上的输出格式。以下是用于打印数组中包含的信息的代码示例:

int store;
while(table[i]!=NULL)
            {
                store=table[i]->ReturnID();
                output<<"ID: "<<setw(9)<<store<<"\t"; // Export to a file channel
                store=table[i]->ReturnTotalNumber();
                output<<" Total Number: "<<setw(5)<<store<<endl;
                i++;
            }

虽然代码编译和按预期工作,但是我的output.txt文件的一部分:

ID:       243    Total Number:     0
ID:       312 Total Number:     0
ID:       458    Total Number:     0
ID:       700    Total Number:     0
ID:       738    Total Number:     0
.....

txt文件的第二行似乎总是失衡。其余的都不错,无论它们有多少。我还注意到将第一个 setw(9)从9更改为任何其他随机数修复了该错误但我无法解释它。有人对此有任何解释吗?我的编译器是GCC-G ++版本4.4.1,我的IDE是Code :: Blocks 10.05。

1 个答案:

答案 0 :(得分:0)

根据您输出的字符串,看来该标签在某种程度上误入歧途。因此,您的任务是找出程序是否不是 output ,或者是否使用您用于查看输出的任何工具来呈现它。

我会将输出发送到一个文件,然后使用你所拥有的任何十六进制转储实用程序来检查所述文件以查看该选项卡是否实际存在。在Linux(或带有CygWin的Windows)下,您可以使用:

od -xcb fileNameYouCapturedTo

如果您可以确定它未​​输出,请在glibc here上引发错误。如果正在输出那么你有两种可能性。

首先,您可以针对您用于查看输出的任何工具提出错误,无论是编辑器还是您正在使用的终端程序(因为它似乎没有正确处理选项卡)。 / p>

或者你可以完全抛弃标签,只输出一个空格。由于setw()因为列已排成一列,所以此处几乎不需要标签。