【发布时间】:2020-02-17 00:26:39
【问题描述】:
我正在尝试从执行某些处理的函数中返回一个字符串。
我尝试将它作为右值引用和左值引用返回。没用:(。
处理函数:
std::string processingFunction()
{
std::string str = "";
//processing...
strftime(&str[0], MAX_LENGTH, DATE_FORMAT, tm_STRUCT_ADRRESS);
return str;
}
函数的使用:
std::string temp = processingFunction();
if(temp.empty())
{
//stuff
}
调试时(在 VS 2019 中),我可以在 Watch 中看到 temp 的值,但 temp.empty() 总是返回 1。即使我可以看到该值存在。
这是 tl;dr 的屏幕截图: m_bucket_function is the processing function
【问题讨论】:
-
你能告诉我们完整的代码吗?
-
temp.empty() 测试字符串是否为空,值 0 表示 false,这意味着字符串不为空。但你期待它是非空的,不是吗?所以我认为这意味着它正在工作。
-
使用
if (!temp.empty())。 -
是的,因为你自己说过 - temp 不为空(“我可以看到值”)repl.it/repls/OddDarkgrayProcess
-
您正在写入
str缓冲区,而无需先调整其大小以容纳该数据。大不,UB。
标签: c++