c++逐行读取写入txt文件的方法

/*该程序从文件main.txt文件中着行读取字符存放在s中并打印s*/

#include<fstream>
#include<string>
#include<iostream>
using namespace std;
void main()
{
ifstream in("main.txt");
string s;
while(getline(in,s))//着行读取数据并存于s中,直至数据全部读取
cout<<s.c_str()<<endl;
}


fstream提供了三个类,用来实现c++对文件的操作。(文件的创建、读、写)。
ifstream -- 从已有的文件读

ofstream-- 向文件写内容

fstream- 打开文件供读写

文件打开模式:

ios::in            
ios::out           
ios::app           从文件末尾开始写
ios::binary        二进制模式
ios::nocreate      打开一个文件时,如果文件不存在,不创建文件。
ios::noreplace     打开一个文件时,如果文件不存在,创建该文件
ios::trunc         打开一个文件,然后清空内容
ios::ate           打开一个文件时,将位置移动到文件尾

文件指针位置在c++中的用法:

ios::beg   文件头
ios::end   文件尾
ios::cur   当前位置
例子:
file.seekg(0,ios::beg);   //让文件指针定位到文件开头
file.seekg(0,ios::end);   //让文件指针定位到文件末尾
file.seekg(10,ios::cur);   //让文件指针从当前位置向文件末方向移动10个字节
file.seekg(-10,ios::cur);   //让文件指针从当前位置向文件开始方向移动10个字节
file.seekg(10,ios::beg);   //让文件指针定位到离文件开头10个字节的位置

常用的错误判断方法:

good()   如果文件打开成功
bad()   打开文件时发生错误
eof()    到达文件尾

实例:

一、写入文件

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

void main()
{
    ofstream in;
in.open("com.txt",ios::trunc); //ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建
int i;
char a='a';
for(i=1;i<=26;i++)//将26个数字及英文字母写入文件
{
   if(i<10)
   {
    in<<"0"<<i<<"\t"<<a<<"\n";
    a++;
   }
   else
   {
    in<<i<<"\t"<<a<<"\n";
    a++;
   }
}
in.close();//关闭文件
}

打开com.txt,效果如下:


二、读取文件

上面仅仅是将文本写入文件,并没有读取出来。

以下为读取文件的一种方法:将文件每行内容存储到字符串中,再输出字符串

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

void main()
{
char buffer[256];
fstream out;
out.open("com.txt",ios::in);
cout<<"com.txt"<<" 的内容如下:"<<endl;
while(!out.eof())
{
   out.getline(buffer,256,'\n');//getline(char *,int,char) 表示该行字符达到256个或遇到换行就结束
   cout<<buffer<<endl;
}
out.close();
cin.get();//cin.get() 是用来读取回车键的,如果没这一行,输出的结果一闪就消失了
}


  • 13
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C++中将string类型写入txt文件可能会出现乱码问题,这是因为在输出string类型数据时,常常会使用c_str()函数将string类型转换为C风格的字符串,而C风格的字符串默认使用ASCII编码,无法支持一些非ASCII字符的输出。 解决这个问题的方法是,将string类型的数据转换为宽字符类型(wchar_t类型),并使用wofstream类来进行文件输出。wofstream类是ofstream类的派生类,支持宽字符类型的输出。下面是一个示例代码: ```c++ #include <iostream> #include <fstream> using namespace std; int main() { // 打开文件写入文本 wofstream outfile("test.txt"); if (outfile.is_open()) { wstring str = L"你好,世界!"; outfile << str << endl; outfile.close(); } else { cout << "打开文件失败!" << endl; return 1; } // 从文件读取文本 wifstream infile("test.txt"); if (infile.is_open()) { wstring line; while (getline(infile, line)) { wcout << line << endl; } infile.close(); } else { cout << "打开文件失败!" << endl; return 1; } return 0; } ``` 在上述代码中,我们使用wofstream对象outfile打开了一个名为test.txt文件,并将一段宽字符类型的文本写入文件中。如果文件打开成功,我们使用文件流运算符<<将宽字符类型的字符串写入文件中,并使用close函数关闭文件。如果文件打开失败,输出错误信息并返回。 然后,我们使用wifstream对象infile再次打开test.txt文件,并从文件读取文本。如果文件打开成功,我们使用getline函数读取文件中的每一行文本,并逐行输出到屏幕上。需要注意的是,在输出宽字符类型的数据时,需要使用wcout对象来进行输出。 最后,需要注意的是,使用宽字符类型输出文件时,文件的编码方式应该与程序中使用的编码方式一致。如果程序使用的是UTF-8编码,那么输出文件时,应该将文件编码方式设置为UTF-8。可以在wofstream对象的构造函数中指定文件编码方式,例如: ```c++ wofstream outfile("test.txt", ios::out | ios::binary); outfile.imbue(locale("zh_CN.UTF-8")); ``` 这样可以将输出文件的编码方式设置为UTF-8。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神气爱哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值