c++文件读写问题 ifstream
e.gifstreamfin(...);charch;fin.get(ch)和fin.get()的区别,他们返回值是什么,fin.get()失败了返回EOF?而fin.g...
e.g ifstream fin(...);
char ch;
fin.get(ch)和fin.get()的区别,他们返回值是什么,fin.get()失败了返回EOF?而fin.get(ch)返回空?是么?
比如 用while判断时是while(fin.get(ch))..和while((ch=fin.get())!=EOF)是等价的效果 为什么? 求大神详解,感激不尽!!! 展开
char ch;
fin.get(ch)和fin.get()的区别,他们返回值是什么,fin.get()失败了返回EOF?而fin.get(ch)返回空?是么?
比如 用while判断时是while(fin.get(ch))..和while((ch=fin.get())!=EOF)是等价的效果 为什么? 求大神详解,感激不尽!!! 展开
3个回答
展开全部
首先,这两个用法是同名的重载方法
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这种写法就是直接的写法了,没什么好解释的。
展开全部
1、socket的send和receive函数,一次发送和接收多少个字节最为合理,效率最高?
概念不对.send是向发送方的缓冲区写入,receive是从接收方的缓冲区读.这个缓冲区大小可以通过setsockopt来改变.你在写的时候,数据被写入缓冲区,系统在某个时间把缓冲区的数据通过网络发送,何时发送,不是由你决定的.
2、我如何定位当前文件所要读的位置,就是类似于fseed()的功能,能够分多次把文件读完,每次读一部分并发送。
seekg成员函数用于读定位,seekp用于写定位.流在打开的时候,注意用二进制方式打开.但是在你的应用里面,有使用定位函数的必要吗,无论在读还是写时,会自动移动位置指针,除非你要读取文件的特定部分.
概念不对.send是向发送方的缓冲区写入,receive是从接收方的缓冲区读.这个缓冲区大小可以通过setsockopt来改变.你在写的时候,数据被写入缓冲区,系统在某个时间把缓冲区的数据通过网络发送,何时发送,不是由你决定的.
2、我如何定位当前文件所要读的位置,就是类似于fseed()的功能,能够分多次把文件读完,每次读一部分并发送。
seekg成员函数用于读定位,seekp用于写定位.流在打开的时候,注意用二进制方式打开.但是在你的应用里面,有使用定位函数的必要吗,无论在读还是写时,会自动移动位置指针,除非你要读取文件的特定部分.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数原型是:
int get();
istream& get(char&);
EOF的实际值是 -1;
你现在知道了不?
int get();
istream& get(char&);
EOF的实际值是 -1;
你现在知道了不?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询