- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
std::ios_base::ate
(例如 std::ios_base::app
除外)和 std::的意义何在ios_base::trunc
(例如std::ios_base::out
除外)?
我应该更喜欢写 std::ios_base::smth
而不是 std::ios::smth
?
最佳答案
std::ios_base::ate 将光标定位在文本的末尾,而 std::ios_base_app 在末尾附加文本(带有写操作),尽管您仍然可以从头开始阅读:)
std::ios_base::trunc 截断文件,使其被清空,而 std::ios_base::out 只是指定您要写入流。
我目前无法引用该标准(在我的平板电脑上,Acrobat Reader 不允许复制),但从 ISO 14882:1998 的第 27.4.2.1.4 段中,您可以在链接上看到的信息几乎是准确的: http://cplusplus.com/reference/iostream/ios_base/openmode/
总结一下:
std::ios_base::app = append
通过“seek[ing] to end before each write”追加到流的末尾
std::ios_base::ate = At The End
打开后立即在末尾查找
std::ios_base::binary = binary
以二进制而不是文本执行操作
std::ios_base::in = input
以阅读模式打开
std::ios_base::out = output
以写入模式打开
std::ios_base::trunc = truncate
在打开时截断流。
这些值只是标志,因此您可以在末尾使用读/写二进制文件打开流:
std::ios_base::in | std::ios_base::out | std::ios_base::ate | std::ios_base::binary
关于使用这些值的方式,如你所愿。它们在 std::ios_base
类中被声明为公共(public)静态字段(参见 27.4.2),因此可以使用 std::ios::ate
甚至访问它们类似于 cout.binary
!
你必须注意的一点是 std::ios_base::ate
并不意味着 std::ios_base::app
也不意味着 std: :ios_base::out
隐含 std::ios_base::trunc
。每个字段都有不同的含义,也有不同的使用情况,虽然大部分都不能单独使用:)
关于c++ - std::ios_base::ate 和 std::ios_base::trunc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253183/
#include #include #include using namespace std; class Logger { private: ofstrea
FatalMessageAssembler是一个通过 FatalMessageAssembler& operator FatalMessageAssembler& operator::basic_i
我正在尝试将一个复杂对象保存到一个文件中,我正在像这样在复杂对象中重载 > 运算符 class Data { public: string name; double rating; f
当我尝试执行以下操作时,标题中出现错误。 class Test { private: std::ifstream File; public: Test(); }; 测试::测试() {
我有一个看起来像这样的结构: sturct person { string surname; person(string n) : surname(n) {}; } 我需要重载 ope
答: std::ofstream("test.txt", std::ios_base::app); 乙: std::ofstream("test.txt", std::ios_base::app|st
头文件中可以看出 , 类 ios_base源自 template class _Iosb ,其中以下 static const variables定义: static const _Fmtflag
这是来自MSDN的文档:ate,在首次创建控制对象时寻找流的末尾。 trunc,在创建控制对象时删除现有文件的内容。 我只是无法理解它们之间的区别,以下两个代码片段的行为相同(它们在插入之前清除内容)
我有一个返回 unique_ptr 的 API给 API 用户。我想知道用户何时完成此流,以便我可以对他们刚刚写入的文件采取进一步的操作。必须关闭该文件,因为即将重新挂载分区。 这可能是这个问题的错误
27.6.3.4.2 Buffer management and positioning pos_type seekoff(off_type off, ios_base::seekdir way,
我一直在寻找将字符串转换为 int 的最佳方法,但遇到了一个我不理解的函数: template bool from_string(T& t, const std::
std::ios_base::ate(例如 std::ios_base::app 除外)和 std::的意义何在ios_base::trunc(例如std::ios_base::out除外)? 我应该
在 std::ios_base::out 中使用 std::ios_base::trunc 标志的目的是什么?我在很多例子中都看到了这一点。 我认为标准保证 std::ios_base::out 也会
对于我的一项作业,我被告知使用 cin.clear(ios_base::failbit) 来设置 failbit。我想知道,cin.clear(ios_base::failbit) 和 cin.set
我已经实现了查找最大值和最小值的函数。但我得到以下错误代码: [错误] 从“std::ios_base& (*)(std::ios_base&)”到“int”的无效转换 [-fpermissive]
ios_base 类中的静态常量在创建时进行初始化,这对于常量来说是有意义的。非常量静态成员变量是否可以用相同的方式初始化,或者这个概念是否只允许常量静态成员使用? 对于带有 gnu 编译器的非常量静
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
这个函数有两个不同的引用: 一个用 const 声明的 here ; 还有一个没有 const here ; 哪个是正确的? 最佳答案 标准说 (27.5.3.3) 定义应该是: locale get
我正在使用 libcurl 下载序列化代码并将其打开,但是,我收到一个错误,看起来 fstream 丢失了,但它包含在内。我环顾四周,但很少发现错误。下面是错误和代码。错过了什么? 编译错误输出 g+
我想知道为什么下面的代码没有按预期工作: #include #include using namespace std; int main(){ int n; string s;
我是一名优秀的程序员,十分优秀!