我有一堂课:
class Symbol_t {
public:
Symbol_t( const char* rawName ) {
memcpy( m_V, rawName, 6 * sizeof( char ) );
};
string_view strVw() const {
return string_view( m_V, 6 );
};
private:
char m_V[6];
}; // class Symbol_t
并且有一个我无法修改的 lib-func:
extern bool loadData( const string& strSymbol );
如果有局部变量:
Symbol_t symbol( "123456" );
当我需要调用loadData时,我不敢这样做:
loadData( string( symbol.strVw().begin(), symbol.strVw().end() ) );
我必须这样做:
string_view svwSym = symbol.strVw();
loadData( string( svw.begin(), svw.end() ) );
我的问题:第一种方法正确吗?或者我必须使用第二个?
因为我认为在方法 1 中,我传递给 std::string 的构造函数的迭代器是两个不同的 string_vew 对象,理论上结果是未定义的,即使我们几乎所有的 C++ 编译器都会得到预期的结果。
任何提示将不胜感激!谢谢。
原文由 Leon 发布,翻译遵循 CC BY-SA 4.0 许可协议
无需使用 c’tor 获取范围。
std::string
有一个根据std::string_view
运行的构造函数,列表中的 第 10 位。其中的效果是”`