如何将boost :: string_ref与std :: string进行比较

Woj*_*ilo 3 c++ string boost stl

我正在尝试boost::string_ref按照我的意愿工作,但我现在面临一个问题 - 代码无法编译:

 #include <boost/utility/string_ref.hpp> 
 #include <iostream> 
 #include <string> 

 using namespace std;

int main() {
   string test = "test";
   boost::string_ref rtest(test);
   cout << (rtest == "test")<<endl;
}
Run Code Online (Sandbox Code Playgroud)

并且gcc会抛出30kB的错误日志

source.cpp: In function 'int main()':
source.cpp:10:19: error: no match for 'operator==' (operand types are 'boost::string_ref {aka boost::basic_string_ref<char, std::char_traits<char> >}' and 'const char [5]')
    cout << (rtest == "test")<<endl;
                   ^
Run Code Online (Sandbox Code Playgroud)

如何比较boost::string_refstd::string

Nic*_*son 5

老实说,我只是避免string_ref完全使用,直到它成熟.你不能比较一个事实string_ref,以一个std::string或一个const char *开箱应该响起警号(看起来像他们忘了写了一堆比较运营商),更糟的是,它看起来并不像收到库充分的测试(例如bug 8067!).

  • 看起来即将推出的[Boost 1.54](http://www.boost.org/users/history/version_1_54_0.html)将解决这个问题,这将使`boost :: string_ref`更有用. (6认同)