如何复制volatile std::string
? volatile没有复制构造函数,c_str
之类的东西也不允许volatile访问。 operator=
似乎也不允许设置易失性。好像std::string
似乎无法用作易失性对象。是这个意图,还是我错过了一些使用它的方法?
注意:我有简单的解决方法,我在尝试在某些低级代码中使用字符串时遇到了这个问题。
答案 0 :(得分:1)
如您所述,std::string
上的所有成员函数均未标记为volatile
,因此您无法对volatile std::string
执行任何操作。我认为唯一的选择是抛弃volatile
ness并对结果执行操作,如下所示:
const_cast<std::string&>(myVolatileString) = "Now I'm different!"
但从根本上说,你可能不应该制作volatile std::string
。 volatile
适用于可能由外部源突变或由多个线程更改的对象。第一种情况非常不寻常,需要一些非常特殊的硬件才能知道std::string
的布局。第二个是不安全的,因为std::string
不是线程安全的。
希望这有帮助!