Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用对象初始化字符串? 所以我想知道我是否可以在C++中做如下的事情。 #include <string> using namespace std; class foo { public: string bar; string baz; foo(const string &faz) :bar(faz) { }; }; int main() { const foo foo1("somestring"); bool isTrue = ((std::string(foo1) == "some string");//This should be true return 0; }_C++_String - Fatal编程技术网

如何用对象初始化字符串? 所以我想知道我是否可以在C++中做如下的事情。 #include <string> using namespace std; class foo { public: string bar; string baz; foo(const string &faz) :bar(faz) { }; }; int main() { const foo foo1("somestring"); bool isTrue = ((std::string(foo1) == "some string");//This should be true return 0; }

如何用对象初始化字符串? 所以我想知道我是否可以在C++中做如下的事情。 #include <string> using namespace std; class foo { public: string bar; string baz; foo(const string &faz) :bar(faz) { }; }; int main() { const foo foo1("somestring"); bool isTrue = ((std::string(foo1) == "some string");//This should be true return 0; },c++,string,C++,String,如何使std::stringfoo1等于某个字符串?是否需要使用一些特殊的变量名?或者我还需要做些什么?如果您知道,请告诉我您基本上有两种选择: 添加一个转换运算符,以便foo可以隐式转换为字符串 为foo定义运算符==。 第一个选项一开始看起来很吸引人,但是使用转换操作符的代码很快就会失控——重载解析已经足够棘手了,因为它不需要添加更多可能的路径 运算符==版本非常简单,注意,通过将其设置为非成员,您可以允许字符数组显示在==的左侧: 你会像这样使用它: bool isTrue = (foo1

如何使std::stringfoo1等于某个字符串?是否需要使用一些特殊的变量名?或者我还需要做些什么?如果您知道,请告诉我您基本上有两种选择:

添加一个转换运算符,以便foo可以隐式转换为字符串 为foo定义运算符==。 第一个选项一开始看起来很吸引人,但是使用转换操作符的代码很快就会失控——重载解析已经足够棘手了,因为它不需要添加更多可能的路径

运算符==版本非常简单,注意,通过将其设置为非成员,您可以允许字符数组显示在==的左侧:

你会像这样使用它:

bool isTrue = (foo1 == "some string");

这与char数组匹配,因为foo有一个转换构造函数,并且隐式转换链char[]->char*->const std::string&发生了。

您可以添加一个转换运算符,但这些运算符通常会被降级到实际有用的特定情况下。@CaptainObvlious我想这是用于结构的?你能具体说明你在回答中的意思吗?请容忍我,我是新手。运算符字符串常量{return BLAH;}hmmm。结构和类之间的唯一区别是默认访问,即私有与公共。转换运算符是运算符T const,其中T是要转换为的类型。@NeilKirk Kirk我将把它放在我的代码中的什么位置?假设他想按bar成员进行比较。实际上并没有说明应该如何进行比较。我不认为使用转换运算符会失去控制。我只使用它返回对象的单个成员字符串。另外,在我的实际代码中,我需要使用BOOST\u REQUIRE\u EQUALsome字符串std::stringfoo1;所以我不能使用运算符==version。
bool isTrue = (foo1 == "some string");