2

当我遇到这个奇怪的错误时,我正在处理 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。

4

1 回答 1

0

根据您输出的字符串,该选项卡似乎误入歧途。因此,您的任务是确定它是否不是由程序输出,或者它是否不是由您用来查看输出的任何工具呈现的。

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

od -xcb fileNameYouCapturedTo

如果您可以确定它没有被输出,请在glibc 此处提出错误。如果它正在输出,那么您有两种可能性。

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

或者你可以完全放弃标签,只输出一个空格。鉴于由于 ,您的列已经排列好setw(),因此这里几乎不需要制表符。

于 2015-07-31T06:26:05.583 回答