![](/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.