ifstream用法,关于C中 ifstream in 的使用

1,关于C中 ifstream in 的使用〉in是自定义的吧?可以定义为in,也可以定义为cin等--是的 。〉ifstream in("abc.in")括号里的语句可以打开哪些文件呢?包括数组、结构体吗?--最好只用它来读含有文字的文件 。倒不是说二进制文件不能用它读,而是因为ifstream本意就是为了读取字符设计的,用它来读二进制文件再作转换反而低效率 。你说的数组、结构体如果是写在二进制文件里面的 , 最好别 。〉in>>n;这一句作用是什么?-- 把文件最开始的部分作为整数读出来,写入整数n 。〉.size()是确定向量元素个数(包括数组吗?)--是的 。〉如果前面in>>n;得到的是向量元素个数,那 m.size()-n-1 岂不是 -1?注意这个语句是在一个大循环里面:for(string s; n-- && getline(in,s); )n是在不断递减的,每次减一 。所以m.size()-n-1在这个循环里不停地增加 , 从0到m.size()-1 。
2,c ifstream函数的使用string有个叫c_str()的成员函数返回c风格的字符串,你可以直接用你好!做一个输入文件名的操作,然后打开文件while(true)in.get(tem); // 这里读到eof了if(!in.eof ()) break;text+=tem; // 不在中间跳出的话,连接的是上次读到的}string 是stl里的模板,是为了方便字符串操作,当然不能传,可以用char数组 , #include<iostream>#include<fstream>using namespace std;chara[50];while(true)cin>>a;ifstreamfin(a);longtemp;fin>>temp;fin.close();}}手机,没编译 , 有错请讲
3,c文件读写问题 ifstream首先,这两个用法是同名的重载方法int_type get(); // (1) basic_istream& get( char_type& ch ); // (2)使用(1)的例子(请自行加头文件iostream,ifstream):int main() ifstream ifs("a.cpp"); ifstream::int_type ch; // 这里也可以写成 int ch; while ((ch = ifs.get()) != ifstream::traits_type::eof()) // 这里也可以写成 while ((ch = ifs.get()) != EOF) cout << (char)ch; }}使用(2)的例子(请自行加头文件iostream,ifstream):int main() ifstream ifs("a.cpp"); char ch; while (ifs.get(ch)) cout << ch; }}为什么while(fin.get(ch))..和while((ch=fin.get())!=EOF)是等价的效果?因为这种写法fin.get(ch)返回的是这个stream本身  , 这个stream有一个bool类型的重载类型转换方法,这个的作用就是为了能这样简单的判断,如果读到文件末尾了返回false,所以能这么用 。而(ch=fin.get())!=EOF这种写法就是直接的写法了,没什么好解释的 。函数原型是:int get();istream& get(char&);EOF的实际值是-1;你现在知道了不?1、socket的send和receive函数,一次发送和接收多少个字节最为合理,效率最高?概念不对.send是向发送方的缓冲区写入,receive是从接收方的缓冲区读.这个缓冲区大小可以通过setsockopt来改变.你在写的时候,数据被写入缓冲区,系统在某个时间把缓冲区的数据通过网络发送,何时发送,不是由你决定的.2、我如何定位当前文件所要读的位置,就是类似于fseed()的功能,能够分多次把文件读完,每次读一部分并发送 。seekg成员函数用于读定位,seekp用于写定位.流在打开的时候,注意用二进制方式打开.但是在你的应用里面,有使用定位函数的必要吗,无论在读还是写时,会自动移动位置指针,除非你要读取文件的特定部分.不能用sscanf(ch,"%s %d %s",&name,&age[i],&memo); 来拆分你的记录,得用strstr(ch, "姓名:")这样的方法来定位,然后取值,例如:char * p1 = strstr(ch, "姓名:");char * p11 = p1 + strlen("姓名:");char * p2 = strstr(ch, "年龄:");char * p21 = p2 + strlen("年龄:");char * p3 = strstr(ch, "备注:");char * memo = p3 + strlen("备注:");char name[p2-p11+1];strncpy(name, p11, p2-p11);char age[p3-p21+1];strncpy(age, p21, p3-p21);【ifstream用法,关于C中 ifstream in 的使用】

    推荐阅读