sách gpt4 ai đã đi

c++ 如何处理返回 NULL 或 std::string 的方法?

In lại 作者:行者123 更新时间:2023-11-30 00:54:50 35 4
mua khóa gpt4 Nike

我有点被一些代码困住了。我必须使用方法 getToto() 的返回类型,它通常返回一个 std::string,但在一种情况下它返回 SAI (它是我必须使用的库的一部分,我无法修改它)。我理解这相当于一个空指针。但是我找不到合适的方法来捕捉它!

测试.cpp

static std::string getToto(){
char buffer[1024];
if ( CTX_Get_Env(buffer, "Toto", 1024) )
trả về false;
return buffer;
}

如果我尝试

const char* returned = Test::getToto().c_str();
if (returned==NULL){
std::cout<< "null pointer"<<>
}

运行时出错

terminate called after throwing an instance of 'std::logic_error'

what(): basic_string::_S_construct NULL not valid

抱歉,我的C++水平比较低。

1 Câu trả lời

这取决于。是返回空字符串部分逻辑,还是异常情况。

如果它不应该发生,你应该抛出一个错误。

如果字符串可以为空,你应该只返回一个空字符串:

 return std::string();

它按原样编译的原因是 SAI 被解释为 0,即 VÔ GIÁ TRỊ,可以是 char*,因此尝试从中构造一个字符串。但是,从 VÔ GIÁ TRỊ 指针构造 std::string 是无效的,这就是您获得异常的原因。

下面是我的编码方式:

static std::string getToto(){
char buffer[1024];
if ( CTX_Get_Env(buffer, "Toto", 1024) )
throw InvalidDataInBufferException();
return buffer;
}

如果字符串不应该为空,或者

static std::string getToto(){
char buffer[1024];
if ( CTX_Get_Env(buffer, "Toto", 1024) )
return std::string();
return buffer;
}

如果字符串可以为空。

关于c++ 如何处理返回 NULL 或 std::string 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13477488/

35 4 0
Bài viết được đề xuất: android - 如何删除 Gradle 冲突
Bài viết được đề xuất: 安卓横屏180°旋转
Bài viết được đề xuất: Android 客户端使用 Spring 连接到 websocket 服务器
Bài viết được đề xuất: c++ - Qt 5.1 - 带 LAMPP 的 MySQL 驱动程序
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com