C++ 逐行写入文件,逐行读取文件,先写后读
1、解决的问题
将 几行整数 通过屏幕依次逐行写入到文件中,
然后再将该文件中的数据 逐行在屏幕上显示出来,
且 每一行的整数 按照一定的格式(如左对齐,每个数据后空四个字符)输出来。
eg:
屏幕上输入:
1 2 3 w
4 5 6 w
7 8 9 w
#
文件和屏幕中显示:
1 2 3
4 5 6
7 8 9
2、测试代码
代码中 逐行显示子函数 void disp_file_by_number(char *fname)参考了 该博文
/*
按行写入文件,按行读取文件,先写后读
*/
#include<iostream>
#include<fstream>
#include<sstream>//包含 istringstream
#include<iomanip>//包含 setiosflags(ios::left)、 setw(4)
using namespace std;
void disp_file_by_number(char *fname)
{
ifstream in(fname);
string line;
if (in)
{
while (getline(in, line))
{
istringstream istrline(line);
int c;//如果是整数的话,就存成 int 型
while (istrline >> c)
cout << setiosflags(ios::left) << setw(4) << c;
cout << endl;
}
cout << endl;
}
else
cout << "No such a file" << endl;
in.close();
}
void write_into_file_by_line(char *fname)
{
ofstream out(fname);
string s;
while (cin >> s && s != "#")//当遇到"#"时退出循环
{
if (s == "w")//输入 “w”,作为换行符
{
out << endl;
continue;
}
out << setiosflags(ios::left) << setw(4) << s;
}
out << endl;
out.close();
}
int main()
{
write_into_file_by_line("test_out.txt");
cout << "write into file done!" << endl;
disp_file_by_number("test_out.txt");
return 0;
}
/*
测试用例:
1 2 3 w
4 5 6 w
7 8 9 w
#
*/
3、缺点
在屏幕上输入时,必须以一个字符(如本文选择“w”)来代替换行,这一点不太好。
如果能够 直接点击回车键,就实现换行,就再好不过啦。
eg:
屏幕上输入:
1 2 3
4 5 6
7 8 9
#
望不吝赐教!!