如何将字符串设置为可选字符串值?

Don*_*aka 2 c++ string stdoptional

由于程序(C++)中的某些限制,我遇到了将可选字符串分配给字符串变量的情况,这会出现以下错误:\nerror: no match for \xe2\x80\x98operator=\xe2\x80\x99 ...

\n

这段代码是这样的:

\n
void blah(std::experimental::optional<std::string> foo, // more parameters)\n{\n    std::string bar;\n    if(foo)\n    {\n        bar = foo; //error\n    }\n\n    // more code\n}\n
Run Code Online (Sandbox Code Playgroud)\n

尝试:

\n

我尝试使用以下方法将类型转换为匹配:

\n
bar = static_cast<std::string>(foo);\n
Run Code Online (Sandbox Code Playgroud)\n

最终显示此错误:

\n
error: no matching function for call to \xe2\x80\x98std::basic_string<char>::basic_string(std::experimental::optional<std::basic_string<char> >&)\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n

我想知道:

\n
    \n
  1. 有办法处理这种情况吗?
  2. \n
  3. 或者这是一个设计限制,我必须使用其他方法而不是将可选字符串分配给普通字符串?
  4. \n
\n

Jar*_*d42 9

你有几种方法: