0

我花了大约 3 个小时用 ASCII 字符创建一个表格,最后我正确地完成了一个......但问题真的很奇怪......如果我复制表格代码并将其再次粘贴到同一个表格中编程它的格式不同!为什么会这样?

我真的花了很多钱做这件事,这真的让我发疯了!这是完全相同的代码...请帮助

http://i.stack.imgur.com/MB3MO.png

代码如下

  #include <iostream>   // Cout e cin
  #include <cstdlib>   // System Pause
  #include <iomanip>

  using namespace std;

  int main ()
  {

    cout<<char(218)<<setfill(char(196))<<setw(12)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(191)<<endl;

    cout<<char(179)<<left<<setfill(' ')<<setw(11)<<"Algoritmo"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero confronti"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero copie"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Tempo di esecuzione"<<char(179)<<endl;
    cout<<char(195)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<char(180)<<endl;
    cout<<char(192)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20)<<char(193)<<char(217);

    cout<<endl;

    cout<<char(218)<<setfill(char(196))<<setw(12)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(191)<<endl;

    cout<<char(179)<<left<<setfill(' ')<<setw(11)<<"Algoritmo"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero confronti"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero copie"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Tempo di esecuzione"<<char(179)<<endl;
    cout<<char(195)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<char(180)<<endl;
    cout<<char(192)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20) <<char(193)<<char(217);



    cout<<endl;
    system ("PAUSE");
    return 0;

}
4

1 回答 1

2

它与你的文本的理由有关。第一次打印表格时,您left可以设置对齐方式。您应该cout << right在打印第二个表之前使用。

每个流都有一组格式标志。在程序开始时,标准流(例如cout)将其adjustfield设置为right。这就是为什么第一次打印表格时一切正常:表格代码的第一行正确地假定了右对齐文本。一旦你在第二行设置了理由left,它就会保持这种状态,直到你改变它。因此,您实际上可以删除left表格代码第二行中的其他 s,因为第一个就足够了。

要使第二个表格代码正常工作,您需要恢复正确对齐方式。因此,在两个表之间的空行之后,您应该插入cout << right;.

于 2014-05-09T18:26:09.117 回答