首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

C++中 ios和ios_base有什么区别

发布网友 发布时间:2022-04-26 08:40

我来回答

2个回答

热心网友 时间:2022-06-25 23:01

没有区别,ios是成员常数。
ios 和 ios_base 有class 承继关系。

of a stream before each insertion.
ate, to seek to the end of a stream when its controlling object is first created.
in, to permit extraction from a stream.
out, to permit insertion to a stream.
就是说,app是文件流被打开后,每次执行outfile<<"hello\nworld!\n";的过程中,文件指针都移动到文件的末尾,就是在末端进行append。
ate是文件流被第一次打开的时候将文件指针移动到文件末尾,然后可以通过outfile.seekp( pos );将指针移动到pos位置,就是说,在执行outfile<<str;过程中,文件指针可以自己控制。当然,要是不seek的话会保持在末尾。

没有指定ios_base::in,而默认为ios_base::out,导致文件被覆盖。具体里面的实现我就不清楚了。反正app+out没事,ate+out就不能实现其功能了。怀疑是不是里面的标志位有逻辑的冲突。可以细致的研究一下。

void main()
{
ofstream outfile;
outfile.open("c:\\abc.txt",ios::ate | ios::out );
outfile<<"ddddd";
outfile.seekp( 0 ); //move the file pointer to the beginning.
outfile<<"a";
outfile.close();
}
可以看见a把第一个d覆盖了。

热心网友 时间:2022-06-25 23:01

of a stream before each insertion.
ate, to seek to the end of a stream when its controlling object is first created.
in, to permit extraction from a stream.
out, to permit insertion to a stream.
就是说,app是文件流被打开后,每次执行outfile<<"hello\nworld!\n";的过程中,文件指针都移动到文件的末尾,就是在末端进行append。
ate是文件流被第一次打开的时候将文件指针移动到文件末尾,然后你可以通过outfile.seekp( pos );将指针移动到pos位置,就是说,在执行outfile<<str;过程中,文件指针你可以自己控制。当然,要是不seek的话会保持在末尾。

至于你说的覆盖以前的文件,是因为你没有指定ios_base::in,而默认为ios_base::out,导致文件被覆盖。具体里面的实现我就不清楚了。呵呵。反正app+out没事,ate+out就不能实现其功能了。我怀疑是不是里面的标志位有逻辑的冲突。你可以细致的研究一下。等你的好消息。

void main()
{
ofstream outfile;
outfile.open("c:\\abc.txt",ios::ate | ios::out );
outfile<<"ddddd";
outfile.seekp( 0 ); //move the file pointer to the beginning.
outfile<<"a";
outfile.close();
}
可以看见a把第一个d覆盖了
另外,虚机团上产品团购,超级便宜

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com