2016-10-02 123 views
-3

想做一些奇特的格式。我有几行我想互相交流。获取前两行。打印出第二行中的字符乘以第一行中的整数。用星号字符分隔它们。最后一个字符打印后没有星号。移至下一个整数和字符。在一个单独的行上打印它们。为整个列表做这个。我遇到的问题是在单独的行上打印它们。例如:格式化输出C++

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”。

感谢大家的回复!

回答

0

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

std::cout << "!"; 

那么,在这种情况下,你忘了添加新行('\n'),所以你有两个选择:一是将新线自己:

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

或者std::endl;

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

对于两个比较,看herehere。没有进一步的描述,或者更重要的是你的代码看起来不能正常工作,我们不能提出建议或解决你的问题。

+0

这并没有解决第二个问题,即多余的尾随'*'字符。 – IInspectable

+0

@Indusableable,他没有显示代码,所以这是一个完整的预测。我猜他使用for循环打印,他意外地有一个更多的迭代比需要?但是如果他不显示代码,我想怎么知道是什么导致了“多余的尾随'*字符”? – amanuel2

+1

你不应该知道。你也不应该回答一个问题,这是题外话。 – IInspectable