MFC中读取TXT文件中的数据和行列数
数据示例如下:7231020113077550031220830....每个数据存储的字节数未知,有1位数的数据也有4位数的数据。并且读出数据的行数列数,每一行结束有换行...
数据示例如下:
723 1020 1130 775 500 312 20 8 30....
每个数据存储的字节数未知,有1位数的数据也有4位数的数据。
并且读出数据的行数列数,每一行结束有换行符标识。
这种方式请不要说了
ofstream output_file("123.txt",ios::out);
output_file<<a[i][j];
请大家帮帮忙,做图像的
数据的行数和列数是未知的,每行有回车换行 展开
723 1020 1130 775 500 312 20 8 30....
每个数据存储的字节数未知,有1位数的数据也有4位数的数据。
并且读出数据的行数列数,每一行结束有换行符标识。
这种方式请不要说了
ofstream output_file("123.txt",ios::out);
output_file<<a[i][j];
请大家帮帮忙,做图像的
数据的行数和列数是未知的,每行有回车换行 展开
3个回答
展开全部
既然有1位数的数据也有4位数的数据,那么如果txt中没有特意的回车,行数和列数不可能确定。如果有回车的话,简单,用
#include <string.h>
char *strtok( char *str1, const char *str2 );
就能解决。
先用getline()一行读出一个str,并累加行数,然后
char *result = NULL;
char string[100][100];
int x = 0;
result = strtok( str, " ");
while( result != NULL ) {
strcpy(string[x++] , result);
result = strtok( NULL, " " );
}
这样用一个string数组就可以把全部数据保存下来。x记录了总数,然后x除以行数就是列数。
今天有空了,帮你把程序全写出来:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
void main(){
char ch[100] = "\0";
char b[100][100];
int x=0,y=0;
ifstream fin("123.txt",ios::in);
fin.getline(ch,100);
while(!fin.eof()){
++x;
cout<<ch<<endl;
char *result = NULL;
result = strtok(ch,",");
while( result != NULL ) {
strcpy(b[y++],result);
cout<<b[y-1]<<endl;
result = strtok( NULL, "," );
}
memset(ch,0,100);
fin.getline(ch,100);
}
fin.close();
}
//已运行过了,没问题,b[100][100]是所有元素,x为行数,y/x为列数。
#include <string.h>
char *strtok( char *str1, const char *str2 );
就能解决。
先用getline()一行读出一个str,并累加行数,然后
char *result = NULL;
char string[100][100];
int x = 0;
result = strtok( str, " ");
while( result != NULL ) {
strcpy(string[x++] , result);
result = strtok( NULL, " " );
}
这样用一个string数组就可以把全部数据保存下来。x记录了总数,然后x除以行数就是列数。
今天有空了,帮你把程序全写出来:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
void main(){
char ch[100] = "\0";
char b[100][100];
int x=0,y=0;
ifstream fin("123.txt",ios::in);
fin.getline(ch,100);
while(!fin.eof()){
++x;
cout<<ch<<endl;
char *result = NULL;
result = strtok(ch,",");
while( result != NULL ) {
strcpy(b[y++],result);
cout<<b[y-1]<<endl;
result = strtok( NULL, "," );
}
memset(ch,0,100);
fin.getline(ch,100);
}
fin.close();
}
//已运行过了,没问题,b[100][100]是所有元素,x为行数,y/x为列数。
展开全部
1、建立一个指针;
2、打开文件
3、循环读取 每次以读取换行符为结束,将读取的数据按空格分拆,看有多少的数据,申请一个可以放下数据的指针,将其内容放入;
4、读取结束,关闭文件。
每一行指针结构:
struct line
{
int len;//本行数据数量
int *data; //存放本行数据指针 ,根据需要,也可以使用字符串
}
其中 *data=(int * ) malloc(sizeof(int)* len)
具体代码就不写了!
2、打开文件
3、循环读取 每次以读取换行符为结束,将读取的数据按空格分拆,看有多少的数据,申请一个可以放下数据的指针,将其内容放入;
4、读取结束,关闭文件。
每一行指针结构:
struct line
{
int len;//本行数据数量
int *data; //存放本行数据指针 ,根据需要,也可以使用字符串
}
其中 *data=(int * ) malloc(sizeof(int)* len)
具体代码就不写了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Java的String类里倒是有一个split方法,
public String[] split(String regex)
返回数组里装的就是分开的每个数据,你可以看看它的源码怎么实现的,再用C++写一个简单点的,不知道对你有帮助没
public String[] split(String regex)
返回数组里装的就是分开的每个数据,你可以看看它的源码怎么实现的,再用C++写一个简单点的,不知道对你有帮助没
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询