[英]Printing output from a text file c++
这是我用来打印文本文件输出的代码
#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(所有这些从上到下直接在彼此之下)
来自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 "
将被视为几行,而不是一行。
空格是获取另一行文本的分隔符。 因此,如果输入文件中的行末尾有尾随空格,则输出中会有一些额外的空行。
有时在文本编辑器中查看输入文件并打开控制字符非常有用,这样您就可以在行尾看到任何其他空格。 例如,在VI编辑器中,我使用“set list”来查看控制字符(行结尾,制表符等)。
为了帮助处理输入文件,您可能希望在解析之前清除它(删除尾随空格)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.