今天为了配合图片的格式,做了一个图片对应数据库表,在这个表里面有很多的图片数据。分别记载了每个图片中精灵的位置,大小,偏移量,起始位置等数据
0 0 115 91 62 92 7 0 115 118 50 34 92 7 0 233 110 95 44 94 7 0 343 106 115 37 97 7 0 449 129 94 22 97 7 0 578 152 50 17 95 7 0 730 140 102 57 93 7 0 870 107 118 81 91 7 0 0 209 195 99 162 8
读取他们当然是采用infile.open("serverlist.ini",ios::in);啦,不过提取得数据是一整条字符串,要把字符串提取出来才可以;当然这个方法是有很多的,我在这里说一下我的方法:
c++里面有一个strtok()函数,他的作用就是提取字符,比如
strtok("aaaaa,b,cc,,,,,,ddddd",",")就会变成aaaaa和b和cc和ddddd这样的四部分了!
我们来看一下演示程序:
#include <iostream> #include <fstream> #include <atlstr.h> using namespace std;
struct person { CString name; CString addr; }pop[17];
char* p; int r[7]; void main() { int i=0; fstream infile; infile.open("serverlist.ini",ios::in); if(!infile) { cout<<"文件读取失败"<<endl; abort(); } char s[80]; CString TempRbuffer; while(!infile.eof()) { infile.getline(s,sizeof(s)); for(p=strtok(s," ");p!=NULL;p = strtok(NULL, " ")) { r=atoi(p); i++; } for(int g=0;g<7;g++) { cout<<"R["<<g<<"]="<<r[g]<<endl; }
} infile.close(); getchar(); }
注意:给serverlist.ini中写一行数据比如0 0 115 91 62 92 51
通过这段程序,我们把infile.getline得到的字符数组s里的7组数据,分别付给r[7]中数组里。这样的程序非常的简洁。
strtok函数声明如下:
char *strtok(char *s, const char *delim);
参数说明如下: s: 待拆分字符串,拆分一个字符串时,第一次调用传递待拆分字符串,后续调用传递NULL; delim: 分隔符,可以是多个字符,以这些字符中的一个或多个(连续出现时)分隔字符串(数据项)。 返回值:返回本次拆分得到的字符串,返回NULL表示拆分结束。 拆分一个字符串时,需要循环调用本函数。
[此贴子已经被作者于2006-4-13 11:55:38编辑过] |