![](/img/trans.png)
[英]Returning string from function having multiple NULL '\0' in C++
[英]returning a NULL string from a function c++
string receiveFromServer();
此 function 返回从某个服务器接收到的字符串。 如果一路上出现错误(包括协议),我想返回一个 NULL 字符串。 但是,这在 c++ 中不起作用(与 java 不同)。 我试过了:
string response = receiveFromServer();
if (response==NULL) {
cerr << "error recive response\n";
}
但它不合法。 由于返回空字符串也是合法的,我可以返回什么来指示错误?
谢谢你!
您可以抛出异常以指示错误。
try {
std::string response = receiveFromServer();
} catch(std::runtime_error & e) {
std::cerr << e.what();
}
然后你需要在receiveFromServer()
某处throw std::runtime_error("Error receive response")
) 。
创建您自己的从std::runtime_error
派生的异常类以使客户端能够专门捕获您的错误通常被认为是一种好的做法(尽管有些人可能不同意)。
你可以抛出异常(更好的方法),或者返回 boost::optional< string >,但是你必须检查返回值是否有效(这实际上更糟)。
NULL 只有在使用指针时才有意义。 在 java 中,字符串是指针,所以你可以这样做。
在 C++ 中,如果返回 std::string,它必须存在。 所以你有一些可能性
也许您应该尝试处理异常
try
{
string response = receiveFromServer();
}
catch (...)
{
cerr << "error recive response\n";
}
如果你想返回一个空字符串,你也可以使用 function string::empty()
来测试它是否为空
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.