【发布时间】:2020-04-12 21:59:57
【问题描述】:
我有一堂课:
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++ 编译器。
任何提示将不胜感激!谢谢。
【问题讨论】:
标签: c++ string iterator c++17 string-view