从文本文件c ++打印输出

时间:2014-02-27 10:19:45

标签: c++ arrays printing text-files

这是我用来打印文本文件输出的代码

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
string line[30];
ifstream myfile("input1.txt");
int a = 0;

if(!myfile)
{
cout<<"Error opening output file"<<endl;
system("pause");
return -1;
}  
while(!myfile.eof())
{
getline(myfile,line[a],' ');
cout<<line1[a]<<"\n";

}
}

文本输出应该是:(输出与输入完全相同)

  

ABCDEFGHIJKLMNOPQRSTUVWXYZ

     

9876543210

     

MFCJABDEHGIKLTPNORSQWUVYXZ

     

SPHINCTERSAYSWHAT

     

524137968

     

MATLSO

     

FTERFO

     

EYBLEIF

     

LYBWIOL

     

SYGTHO

     

FPNOEDESO

     

LLTDREOI

但我得到了这个输出:

  

ABCDEFGHIJKLMNOPQRSTUVWXYZ

     

9876543210

     

MFCJABDEHGIKLTPNORSQWUVYXZ

     

SPHINCTERSAYSWHAT

     

524137968

     

MATLSO

     

(这两者之间的双倍空间)

     

FTERFO

     

(此后的双倍空间)

     

EYBLEIF LYBWIOL(EYBLEIF位于顶部,LYBWIOL位于其下方,没有   新行)

     

SYGTHO FPNOEDESO LLTDREOI(所有这些直接从上到下   在彼此之下)

2 个答案:

答案 0 :(得分:1)

来自docs

istream& getline (istream&  is, string& str, char delim);
Get line from stream into string
Extracts characters from is and stores them into str until the delimitation character delim is found.

在“MATLSO”和“FTERFO”之后,您似乎有两个额外的空格。删除它们。

更新: 代码中的“定界字符”为' ',因此"MATLSO "将被视为多行,而不是一行。

答案 1 :(得分:1)

空格是获取另一行文本的分隔符。因此,如果输入文件中的行末尾有尾随空格,则输出中会有一些额外的空行。

有时在文本编辑器中查看输入文件并打开控制字符非常有用,这样您就可以在行尾看到任何其他空格。例如,在VI编辑器中,我使用“set list”来查看控制字符(行结尾,制表符等)。

为了帮助处理您的输入文件,您可能希望在解析之前清除它(删除尾随空格)。