C++读txt文件中的内容,并输出
小弟想用C++编写一个程序,是关于读取txt文件中的内容的。txt文件内容如下,endcurve102893#pts=102*Minval=2.999939e+003at...
小弟想用C++编写一个程序,是关于读取txt文件中的内容的。
txt文件内容如下,
endcurve
102893 #pts=102
* Minval= 2.999939e+003 at time= 0.012000
* Maxval= 2.999945e+003 at time= 0.023999
0.000000e+000 3.000000e+003
2.996583e-003 2.999979e+003
5.999796e-003 2.999956e+003
8.996355e-003 2.999944e+003
1.199955e-002 2.999939e+003
endcurve
102894 #pts=102
* Minval= 2.999938e+003 at time= 0.012000
* Maxval= 2.999944e+003 at time= 0.023999
0.000000e+000 3.000000e+003
2.996583e-003 2.999979e+003
5.999796e-003 2.999956e+003
8.996355e-003 2.999943e+003
1.499611e-002 2.999939e+003
.......
如上所示,该txt文件有如下几个特点
(1)每4行含有英文的东西后,就有5行数组。现在我想通过c++把这个txt文件读入,并且在读的过程中,跳过那些英文不读。只读取数组。并把数组输出到另外一个txt文件中
请给我一个合适的编程过程好吗?
小弟不胜感激。采纳的答案,给予50分奖励 展开
txt文件内容如下,
endcurve
102893 #pts=102
* Minval= 2.999939e+003 at time= 0.012000
* Maxval= 2.999945e+003 at time= 0.023999
0.000000e+000 3.000000e+003
2.996583e-003 2.999979e+003
5.999796e-003 2.999956e+003
8.996355e-003 2.999944e+003
1.199955e-002 2.999939e+003
endcurve
102894 #pts=102
* Minval= 2.999938e+003 at time= 0.012000
* Maxval= 2.999944e+003 at time= 0.023999
0.000000e+000 3.000000e+003
2.996583e-003 2.999979e+003
5.999796e-003 2.999956e+003
8.996355e-003 2.999943e+003
1.499611e-002 2.999939e+003
.......
如上所示,该txt文件有如下几个特点
(1)每4行含有英文的东西后,就有5行数组。现在我想通过c++把这个txt文件读入,并且在读的过程中,跳过那些英文不读。只读取数组。并把数组输出到另外一个txt文件中
请给我一个合适的编程过程好吗?
小弟不胜感激。采纳的答案,给予50分奖励 展开
展开全部
C++读txt文件中的内容,代码如下:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void fileRead(string& fileName,vector<string>& vect)
{
ifstream file(fileName.c_str());
while(!file.eof())
{
string strTemp;
int i=1;
while(!file.eof()&&i<5)
{
i++;
getline(file,strTemp);
}
while (!file.eof()&&i<10)
{
i++;
getline(file,strTemp);
istringstream str(strTemp);
string strWord;
string strIn;
while(str>>strWord)
{
if(strWord!=""&&strWord!="\r")
vect.push_back(strWord);
}
}
}
}
void fileWrite(string& fileName,vector<string>& vect)
{
ofstream file(fileName.c_str());
int i=0; //用于控制输出格式,每行两个数组元素
for (vector<string>::iterator iter=vect.begin();iter!=vect.end();iter++)
{
file<<*iter;
if(i==0)
{
file<<"\t";
i=1;
}
else
{
file<<endl;
i=0;
}
}
}
void main()
{
string a="1.txt";
string b="2.txt";
vector<string> vect;
fileRead(a,vect); //a读出
fileWrite(b,vect); //写入b
}
展开全部
楼上的没有看清楼主要求用c++写吗?
用c++写的,不懂的百度hi我,自己写的
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void fileRead(string& fileName,vector<string>& vect)
{
ifstream file(fileName.c_str());
while(!file.eof())
{
string strTemp;
int i=1;
while(!file.eof()&&i<5)
{
i++;
getline(file,strTemp);
}
while (!file.eof()&&i<10)
{
i++;
getline(file,strTemp);
istringstream str(strTemp);
string strWord;
string strIn;
while(str>>strWord)
{
if(strWord!=""&&strWord!="\r")
vect.push_back(strWord);
}
}
}
}
void fileWrite(string& fileName,vector<string>& vect)
{
ofstream file(fileName.c_str());
int i=0; //用于控制输出格式,每行两个数组元素
for (vector<string>::iterator iter=vect.begin();iter!=vect.end();iter++)
{
file<<*iter;
if(i==0)
{
file<<"\t";
i=1;
}
else
{
file<<endl;
i=0;
}
}
}
void main()
{
string a="1.txt";
string b="2.txt";
vector<string> vect;
fileRead(a,vect); //a读出
fileWrite(b,vect); //写入b
}
希望能帮到你~
用c++写的,不懂的百度hi我,自己写的
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void fileRead(string& fileName,vector<string>& vect)
{
ifstream file(fileName.c_str());
while(!file.eof())
{
string strTemp;
int i=1;
while(!file.eof()&&i<5)
{
i++;
getline(file,strTemp);
}
while (!file.eof()&&i<10)
{
i++;
getline(file,strTemp);
istringstream str(strTemp);
string strWord;
string strIn;
while(str>>strWord)
{
if(strWord!=""&&strWord!="\r")
vect.push_back(strWord);
}
}
}
}
void fileWrite(string& fileName,vector<string>& vect)
{
ofstream file(fileName.c_str());
int i=0; //用于控制输出格式,每行两个数组元素
for (vector<string>::iterator iter=vect.begin();iter!=vect.end();iter++)
{
file<<*iter;
if(i==0)
{
file<<"\t";
i=1;
}
else
{
file<<endl;
i=0;
}
}
}
void main()
{
string a="1.txt";
string b="2.txt";
vector<string> vect;
fileRead(a,vect); //a读出
fileWrite(b,vect); //写入b
}
希望能帮到你~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<stdlib.h>
#define MAXCOUNT 500
struct {
float x,y;
} coordinates[MAXCOUNT];
int readdata( char* fname )
{
FILE *fp;
int n = 0;
char s[256]; //line buffer
if( (fp=fopen(fname,"rt")) == NULL ) return -1;
while( !feof(fp) )
{
if( fgets( s, sizeof(s), fp ) == NULL )
break; //出错或到文件结尾则跳出
if( *s == ' ' ) //注意到要读的数对所在的行都是以空格开头的,所以忽略所有开头不是空格的行
{
sscanf( s, "%f%f", &coordinates[n].x, &coordinates[n].y );
n++;
}
}
fclose(fp);
return n; //返回读取的坐标对数量
}
int main()
{
int k, n = readdata( "myfile.txt" );
for( k=0; k<n; k++ )
printf( "pair [%3d]: %e, %e\n", k, coordinates[k].x, coordinates[k].y );
}
调整到你需要的输出后,用 myprog > newtxt.txt (重定向操作)即可生成新的文本文件(假定你把上面这个C文件起名叫myprog.c)。
#include<stdlib.h>
#define MAXCOUNT 500
struct {
float x,y;
} coordinates[MAXCOUNT];
int readdata( char* fname )
{
FILE *fp;
int n = 0;
char s[256]; //line buffer
if( (fp=fopen(fname,"rt")) == NULL ) return -1;
while( !feof(fp) )
{
if( fgets( s, sizeof(s), fp ) == NULL )
break; //出错或到文件结尾则跳出
if( *s == ' ' ) //注意到要读的数对所在的行都是以空格开头的,所以忽略所有开头不是空格的行
{
sscanf( s, "%f%f", &coordinates[n].x, &coordinates[n].y );
n++;
}
}
fclose(fp);
return n; //返回读取的坐标对数量
}
int main()
{
int k, n = readdata( "myfile.txt" );
for( k=0; k<n; k++ )
printf( "pair [%3d]: %e, %e\n", k, coordinates[k].x, coordinates[k].y );
}
调整到你需要的输出后,用 myprog > newtxt.txt (重定向操作)即可生成新的文本文件(假定你把上面这个C文件起名叫myprog.c)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询