5

我怎样才能复制一个volatile std::string?volatile 没有复制构造函数,也c_str不允许 volatile 访问。operator=似乎也不允许设置易失性。似乎std::string根本无法用作易失性对象。这是有意的,还是我错过了某种使用它的方法?

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

4

1 回答 1

2

如您所述, on 上的所有成员函数std::string都没有标记volatile,因此您不能对 a 执行任何操作volatile std::string。我认为唯一的选择是抛弃volatileness 并对结果执行操作,如下所示:

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

不过,从根本上说,您可能不应该制作volatile std::string. volatile适用于可能被外部源改变或被多个线程改变的对象。第一种情况非常不寻常,需要一些非常特殊的硬件来了解std::string. 第二个是不安全的,因为std::string它不是线程安全的。

希望这可以帮助!

于 2013-10-27T20:57:57.887 回答