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