格式化输出c ++

时间:2016-10-02 19:38:49

标签: c++ cout

想做一些奇特的格式化。我有几行我想互相交流。得到前两行。打印第二行中的字符乘以第一行中的整数。用星号字符分隔所有这些。打印完最后一个字符后没有星号。移动到下一个整数和字符。在单独的行上打印它们。为整个列表执行此操作。我遇到的问题是在不同的行上打印它们。例如:

5
!
2
?
3
#

期望的输出:

!*!*!*!*!
?*?
#*#*#

我的输出:

!*!*!*!*!*?*?*#*#*#*

以下是我的代码。另一件需要提及的是,我正在从单独的文本文件中读取有关字符和数字的数据。所以我使用的是getline函数。

以下是代码的一部分:

ifstream File
File.open("NumbersAndCharacters.txt")
string Number;
string Character;
while(!File.eof(){
  getline(File, Number);
  getline(File, Character);
//a few lines of stringstream action
  for (int i=0; i<=Number; i++){
      cout<<Character<<"*";}//end for. I think this is where
                            //the problem is.
  }//end while
File.close();
return 0;

错误在哪里?这是循环吗?或者我不懂getline?

在完成角色的每次乘法后,应该打印“endl”或“\ n”。

感谢大家的回复!

1 个答案:

答案 0 :(得分:0)

您还没有显示您的代码,但这里的问题似乎是您每次打印字符时都忘记添加新行。例如,您可能已经完成了:

std::cout << "!";

好吧,在这种情况下你忘记添加新行('\n'),所以你有两个选择:首先自己插入新行:

std::cout << "! \n";

std::endl;

std::cout << "!" << std::endl;

要比较两者,请参阅herehere。如果没有进一步的描述,或者更重要的是您的代码似乎无法正常工作,我们无法提出建议或解决您的问题。