如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
2014-10-29 13:26
881 查看
原地址:http://blog.csdn.net/stpeace/article/details/12404925
项目中要用到,故此先练练。
先用C语言写一个丑陋的程序:
[cpp] view
plaincopy
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
if(NULL == (fp = fopen("1.txt", "r")))
{
printf("error\n");
exit(1);
}
char ch;
while(EOF != (ch=fgetc(fp)))
{
printf("%c", ch);
}
fclose(fp);
return 0;
}
你只能看到结果,却没法利用每一行。C太丑陋了,还是用C++吧:
[cpp] view
plaincopy
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main()
{
ifstream in("1.txt");
string filename;
string line;
if(in) // 有该文件
{
while (getline (in, line)) // line中不包括每行的<a target="_blank" style="color: #0000F0; display:inline; position:static; background:none;" href="http://www.so.com/s?q=%E6%8D%A2%E8%A1%8C%E7%AC%A6&ie=utf-8&src=se_lighten_f">换行符</a>
{
cout << line << endl;
}
}
else // 没有该文件
{
cout <<"no such file" << endl;
}
return 0;
}
当然,你可以对上述程序进行修改,让1.txt中的每一行输入到2.txt中,如下:
[cpp] view
plaincopy
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main()
{
ifstream in("1.txt");
ofstream out("2.txt");
string filename;
string line;
if(in) // 有该文件
{
while (getline (in, line)) // line中不包括每行的换行符
{
cout << line << endl;
out << line << endl; // 输入到2.txt中
}
}
else // 没有该文件
{
cout <<"no such file" << endl;
}
return 0;
}
结果, 2.txt和1.txt中的内容完全一致,你可以用Beyond Compare比较一下,我比较过了。
看来上述程序还能实现文件的复制呢,如下:
[cpp] view
plaincopy
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
void fileCopy(char *file1, char *file2)
{
// 最好对file1和file2进行判断
ifstream in(file1);
ofstream out(file2);
string filename;
string line;
while (getline (in, line))
{
out << line << endl;
}
}
int main()
{
fileCopy("1.txt", "2.txt");
return 0;
}
当然了,上述程序只能针对文本文件(不仅仅是.txt),对其它类型的文件,不适合。
要将上述字符转成整形数需要使用atoi(line.c_str());
项目中要用到,故此先练练。
先用C语言写一个丑陋的程序:
[cpp] view
plaincopy
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
if(NULL == (fp = fopen("1.txt", "r")))
{
printf("error\n");
exit(1);
}
char ch;
while(EOF != (ch=fgetc(fp)))
{
printf("%c", ch);
}
fclose(fp);
return 0;
}
你只能看到结果,却没法利用每一行。C太丑陋了,还是用C++吧:
[cpp] view
plaincopy
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main()
{
ifstream in("1.txt");
string filename;
string line;
if(in) // 有该文件
{
while (getline (in, line)) // line中不包括每行的<a target="_blank" style="color: #0000F0; display:inline; position:static; background:none;" href="http://www.so.com/s?q=%E6%8D%A2%E8%A1%8C%E7%AC%A6&ie=utf-8&src=se_lighten_f">换行符</a>
{
cout << line << endl;
}
}
else // 没有该文件
{
cout <<"no such file" << endl;
}
return 0;
}
当然,你可以对上述程序进行修改,让1.txt中的每一行输入到2.txt中,如下:
[cpp] view
plaincopy
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main()
{
ifstream in("1.txt");
ofstream out("2.txt");
string filename;
string line;
if(in) // 有该文件
{
while (getline (in, line)) // line中不包括每行的换行符
{
cout << line << endl;
out << line << endl; // 输入到2.txt中
}
}
else // 没有该文件
{
cout <<"no such file" << endl;
}
return 0;
}
结果, 2.txt和1.txt中的内容完全一致,你可以用Beyond Compare比较一下,我比较过了。
看来上述程序还能实现文件的复制呢,如下:
[cpp] view
plaincopy
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
void fileCopy(char *file1, char *file2)
{
// 最好对file1和file2进行判断
ifstream in(file1);
ofstream out(file2);
string filename;
string line;
while (getline (in, line))
{
out << line << endl;
}
}
int main()
{
fileCopy("1.txt", "2.txt");
return 0;
}
当然了,上述程序只能针对文本文件(不仅仅是.txt),对其它类型的文件,不适合。
要将上述字符转成整形数需要使用atoi(line.c_str());
相关文章推荐
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- C++中利用文件输入对象(即ifstream对象)来读取文本文件中带空格的字符串以及混合输入数字与字符串
- C++如何按行读取txt文件并存储到字符串中?
- 从txt文件中逐行读取字符串,并且用读取到的字符串在Mat型的图片上画矩形
- C++ 实现txt文件的读取
- windows 与linux 下用C++读取sqlite实现文件复制(二)
- C++利用CStdioFile从txt文件中读取数据
- OpenGL之C++实现读取txt文件并显示
- C++ 逐行读取txt文件
- C++ 利用string读取txt文件的方法
- 利用JAVA/JSF/JSP实现读取并截取.txt文件http://zhidao.baidu.com/question/42189115.html
- 一个可以从txt文件中逐行(可设置)读取文本的方法
- c++逐行读取txt文件 getline()
- 求助:C++中读取txt文件如何忽略特定符号后的内容?
- C++读取写入.txt文件(ifstream/ofstream)—读取指定行,修改指定行,复制文件,清除文件,统计文件行数
- c++ 读取文件夹下的所有文件名(实现未知文件名也可以批量读取文件)