如何复制/设置volatile std :: string?

时间:2013-10-27 20:54:43

标签: c++ string volatile stdstring

如何复制volatile std::string? volatile没有复制构造函数,c_str之类的东西也不允许volatile访问。 operator=似乎也不允许设置易失性。好像std::string似乎无法用作易失性对象。是这个意图,还是我错过了一些使用它的方法?

注意:我有简单的解决方法,我在尝试在某些低级代码中使用字符串时遇到了这个问题。

1 个答案:

答案 0 :(得分:1)

如您所述,std::string上的所有成员函数均未标记为volatile,因此您无法对volatile std::string执行任何操作。我认为唯一的选择是抛弃volatile ness并对结果执行操作,如下所示:

const_cast<std::string&>(myVolatileString) = "Now I'm different!"

但从根本上说,你可能不应该制作volatile std::stringvolatile适用于可能由外部源突变或由多个线程更改的对象。第一种情况非常不寻常,需要一些非常特殊的硬件才能知道std::string的布局。第二个是不安全的,因为std::string不是线程安全的。

希望这有帮助!