这是我用来打印文本文件输出的代码
#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(所有这些直接从上到下 在彼此之下)
答案 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”来查看控制字符(行结尾,制表符等)。
为了帮助处理您的输入文件,您可能希望在解析之前清除它(删除尾随空格)。