如何将字符串设置为可选字符串值?
How to set a string to an optional string value?
由于程序(C++)中的一些限制,我有一个案例,我将一个可选字符串分配给一个字符串变量,这会产生以下错误:
error: no match for ‘operator=’ ...
这段代码是这样的:
void blah(std::experimental::optional<std::string> foo, // more parameters)
{
std::string bar;
if(foo)
{
bar = foo; //error
}
// more code
}
尝试次数:
我尝试使用以下方法转换类型以匹配:
bar = static_cast<std::string>(foo);
最终显示此错误:
error: no matching function for call to ‘std::basic_string<char>::basic_string(std::experimental::optional<std::basic_string<char> >&)’
我在想:
- 有办法处理这种情况吗?
- 否则这是设计限制,我必须使用其他方法而不是将可选字符串分配给普通字符串?
你有几种方法:
-
/*const*/std::string bar = foo.value_or("some default value");
-
std::string bar;
if (foo) {
bar = *foo;
}
-
std::string bar;
if (foo) {
bar = foo.value();
}
由于程序(C++)中的一些限制,我有一个案例,我将一个可选字符串分配给一个字符串变量,这会产生以下错误:
error: no match for ‘operator=’ ...
这段代码是这样的:
void blah(std::experimental::optional<std::string> foo, // more parameters)
{
std::string bar;
if(foo)
{
bar = foo; //error
}
// more code
}
尝试次数:
我尝试使用以下方法转换类型以匹配:
bar = static_cast<std::string>(foo);
最终显示此错误:
error: no matching function for call to ‘std::basic_string<char>::basic_string(std::experimental::optional<std::basic_string<char> >&)’
我在想:
- 有办法处理这种情况吗?
- 否则这是设计限制,我必须使用其他方法而不是将可选字符串分配给普通字符串?
你有几种方法:
-
/*const*/std::string bar = foo.value_or("some default value");
-
std::string bar; if (foo) { bar = *foo; }
-
std::string bar; if (foo) { bar = foo.value(); }