草庐IT

ofstream_ptr

全部标签

c++ - 我可以使用 CreateFile,但将句柄强制为 std::ofstream 吗?

是否有任何方法可以利用Win32API中的文件创建标志,例如FILE_FLAG_DELETE_ON_CLOSE或FILE_FLAG_WRITE_THROUGH,如此处所述http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx,但随后强制该句柄进入std::ofstream?ofstream的接口(interface)显然是平台无关的;我想在“幕后”中强制一些平台相关设置。 最佳答案 可以将C++std::ofstream附加到Windows文件句柄。以下代码在VS20

c++ - 不同风格的 shared_ptr 之间的差异

boost::shared_ptr之间有什么区别吗?,std::tr1::shared_ptr和即将到来的(在C++0x中)std::shared_ptr?从一个移植到另一个是否会有任何开销或者它们基本相同? 最佳答案 根据Boost网站,boost::shared_ptr......conformstotheTR1specification,withtheonlyexceptionthatitresidesinnamespaceboostinsteadofstd::tr1.根据维基百科C++0x页面TheTR1implementa

c++ - 不同风格的 shared_ptr 之间的差异

boost::shared_ptr之间有什么区别吗?,std::tr1::shared_ptr和即将到来的(在C++0x中)std::shared_ptr?从一个移植到另一个是否会有任何开销或者它们基本相同? 最佳答案 根据Boost网站,boost::shared_ptr......conformstotheTR1specification,withtheonlyexceptionthatitresidesinnamespaceboostinsteadofstd::tr1.根据维基百科C++0x页面TheTR1implementa

c++ - 为什么 shared_ptr 引用计数对象也需要跟踪指向该对象的 weak_ptr 上的数字?

您好,我正在阅读thisdocument和其他一些关于C++的shared_ptr的文档,他们似乎都建议除了指向分配对象的shared_ptr的数量之外,引用计数对象必须跟踪如何许多weak_ptr指针也指向该对象。我的问题是为什么?据我了解,weak_ptr是非拥有的,因此如果指向对象的shared_ptr计数达到零,则可以删除该对象。这就是为什么有时我们需要使用expired检查weak_ptr指向的对象的可用性。您能解释一下需要跟踪weak_ptr数量的原因吗?为什么我们在这里需要弱计数? 最佳答案 std::weak_ptr

c++ - 为什么 shared_ptr 引用计数对象也需要跟踪指向该对象的 weak_ptr 上的数字?

您好,我正在阅读thisdocument和其他一些关于C++的shared_ptr的文档,他们似乎都建议除了指向分配对象的shared_ptr的数量之外,引用计数对象必须跟踪如何许多weak_ptr指针也指向该对象。我的问题是为什么?据我了解,weak_ptr是非拥有的,因此如果指向对象的shared_ptr计数达到零,则可以删除该对象。这就是为什么有时我们需要使用expired检查weak_ptr指向的对象的可用性。您能解释一下需要跟踪weak_ptr数量的原因吗?为什么我们在这里需要弱计数? 最佳答案 std::weak_ptr

c++ - 如何轻松地将输出缩进到 ofstream?

有没有一种简单的方法可以将输出缩进到ofstream对象?我有一个空终止并包含换行符的C++字符数组。我想将其输出到流中,但每行缩进两个空格。是否有一种简单的方法可以使用流操纵器来执行此操作,例如您可以使用流的特殊指令更改整数输出的基数,还是我必须手动处理数组并在检测到的每个换行符处手动插入额外的空格?似乎string::right()操纵器已接近:http://www.cplusplus.com/reference/iostream/manipulators/right/谢谢。-威廉 最佳答案 这是使用构面的完美情况。codecv

c++ - 如何轻松地将输出缩进到 ofstream?

有没有一种简单的方法可以将输出缩进到ofstream对象?我有一个空终止并包含换行符的C++字符数组。我想将其输出到流中,但每行缩进两个空格。是否有一种简单的方法可以使用流操纵器来执行此操作,例如您可以使用流的特殊指令更改整数输出的基数,还是我必须手动处理数组并在检测到的每个换行符处手动插入额外的空格?似乎string::right()操纵器已接近:http://www.cplusplus.com/reference/iostream/manipulators/right/谢谢。-威廉 最佳答案 这是使用构面的完美情况。codecv

c++ - 我应该使用 boost::ptr_vector<T> 还是 vector<boost::shared_ptr<T>>?

我需要一个指针容器。你会推荐boost::ptr_vector或std::vector>?(或者别的什么?)如果感兴趣的话,我的实际数据结构相对复杂(见here)并且目前存储对象,而不是指针,但我想改变它(使用指针容器),以摆脱不必要的复制:typedefstd::multimap>VecElem;std::vectorvec; 最佳答案 谁拥有对象?如果容器拥有对象(意味着对象的生命周期不应超过容器),请使用ptr_vector。否则,使用shared_ptr的vector。标准库容器(例如std::vector或std::lis

c++ - 我应该使用 boost::ptr_vector<T> 还是 vector<boost::shared_ptr<T>>?

我需要一个指针容器。你会推荐boost::ptr_vector或std::vector>?(或者别的什么?)如果感兴趣的话,我的实际数据结构相对复杂(见here)并且目前存储对象,而不是指针,但我想改变它(使用指针容器),以摆脱不必要的复制:typedefstd::multimap>VecElem;std::vectorvec; 最佳答案 谁拥有对象?如果容器拥有对象(意味着对象的生命周期不应超过容器),请使用ptr_vector。否则,使用shared_ptr的vector。标准库容器(例如std::vector或std::lis

c++ - 在销毁期间使用 std::shared_ptr 的 Segfault 可能是由于堆栈上的函数调用过多

以下代码编译运行良好:#includestructMyTree{std::shared_ptrleft;std::shared_ptrright;intval;MyTree(std::shared_ptrleft_,std::shared_ptrright_,intval_):left(left_),right(right_),val(val_){};};intmain(){std::shared_ptrt(newMyTree(std::shared_ptr(),std::shared_ptr(),0));for(inti=0;i但是,当for循环从10000更改为100000时,我收