流的操作可谓是高级抽象的结果,跟linux的文件类似,一切皆文件。那么一切皆流呢?这里指i/o操作。个人感觉用c++编程好处是可以让代码得到很好的组织,但c++语法繁杂,不像c语言那样简洁,可以专注于要解决的问题上,而是关注于解决问题的方式。如果自己有经常用的一套个人库,并个人不断编程维护,这样应该可以很省事。首先看需求,假设你要在foo.txt文件读取格式化的字符串。其中foo.txt内容如下:
SMTP : smtp.gmail.com
PORT : 25
都是这类如"变量类型:值"之类的东西,那么怎么读取?我采用的方法为:
ifstream rfile ;
istringstream sstr ;
string str1, str2 ;
char ch;
rfile.open("foo.txt");
getline(rfile,str);
sstr.str(str.c_str());
sstr>>str1>>ch>>str2;
rfile.close();
其实用c的代码可以:
char buf[BUF_SIZE];
char str1[BUF_SIZE],str2[BUF_SIZE];
FILE *fp ;
fp = fopen("foo.txt","r");
fgets(fp,buf,sizeof(buf)); \\读取整行
sscanf(buf,"%s %c %s",str1,%ch,str2); \\从字符串格式化读
fclose(fp);
这里的读取要求字符串有空格间隔,但是读整数类型可以不必要空格间隔直接sscanf(buf,"%d:%d",&a,&b);