假设你有一个std :: string和一个boost :: container :: string就像这样:
std::string stdString = "This is a test";
boost::container::string boostString = "This is a test";
Run Code Online (Sandbox Code Playgroud)
假设你想比较他们的内容; 以下是不可能的,因为我们无法比较他们的类型:
stdString == boostString // no operator "==" matches these operands
Run Code Online (Sandbox Code Playgroud)
然后,您可以选择使用它们的两种方法.c_str()从每个字符串中获取char*.不确定这是否有效地比较字符串,你试试:
stdString.c_str() == boostString.c_str() // compiles, but comparison returns false
Run Code Online (Sandbox Code Playgroud)
然后尝试仅使用std :: string中的c_str()方法:
stdString.c_str() == boostString // compiles, and comparison seems fine
Run Code Online (Sandbox Code Playgroud)
你出于好奇而尝试相反,它也有效:
stdString == boostString.c_str() // compiles, and comparison seems fine
Run Code Online (Sandbox Code Playgroud)
所以问题是,为什么这两个后面的比较似乎在第一个没有时正常工作?
奖金问题:这是比较这些字符串内容的不可靠方式吗?
完整代码示例:
#include <boost/container/string.hpp>
#include <iostream>
int main(int argc, char *argv[])
{
std::string stdString …Run Code Online (Sandbox Code Playgroud)