- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有点被一些代码困住了。我必须使用方法 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/
Tôi muốn hiểu phương thức methods() của Ruby hoạt động như thế nào. Tôi đã thử tìm kiếm trên Google bằng "phương pháp ruby", nhưng đó không phải là những gì tôi cần. Tôi cũng đã xem ruby-doc.org nhưng không tìm thấy phương pháp này.
Phương thức Test thực hiện tìm kiếm biểu thức chính quy trên chuỗi đã chỉ định và trả về giá trị Boolean cho biết liệu có tìm thấy kết quả khớp hay không. object.Test(string) Tham số object Bắt buộc. Luôn luôn là một
Phương pháp Thay thế thay thế văn bản được tìm thấy trong tìm kiếm biểu thức chính quy. object.Replace(string1, string2) Tham số object Bắt buộc. Luôn luôn là tên của đối tượng RegExp.
Phương thức Raise tạo ra một đối tượng lỗi thời gian chạy. Raise(số, nguồn, mô tả, tệp trợ giúp, ngữ cảnh trợ giúp) Đối tượng tham số phải là
Phương thức Execute thực hiện tìm kiếm biểu thức chính quy trên chuỗi đã chỉ định. object.Execute(string) Tham số object Bắt buộc. Luôn luôn là tên của đối tượng RegExp. sợi dây
Phương thức Clear xóa tất cả các thiết lập thuộc tính của đối tượng Err. object. Đối tượng xóa phải là tên của đối tượng Err. Mô tả Sau khi xử lý lỗi, sử dụng Clear để xóa rõ ràng đối tượng Err. cái này
Phương pháp CopyFile sao chép một hoặc nhiều tệp từ vị trí này sang vị trí khác. object.CopyFile nguồn, đích[, ghi đè] Đối tượng tham số bắt buộc
Phương pháp Copy sao chép một tệp hoặc thư mục được chỉ định từ vị trí này sang vị trí khác. object.Copy destination[, ghi đè] Tham số object Bắt buộc. Tệp hoặc F dự kiến
Phương thức Close đóng tệp TextStream đã mở. Đối tượng object.Close phải là tên của đối tượng TextStream. Ví dụ sau minh họa cách sử dụng phương thức Close.
Phương thức BuildPath thêm tên vào đường dẫn hiện có. object.BuildPath(path, name) Tham số object Bắt buộc. Phải là tên của đối tượng FileSystemObject
Phương thức GetFolder trả về một đối tượng Folder tương ứng với một thư mục trong đường dẫn đã chỉ định. object.GetFolder(folderspec) Tham số object Bắt buộc. Nên là FileSy
Phương thức GetFileName trả về tệp hoặc thư mục cuối cùng trong đường dẫn đã chỉ định (không phải phần đường dẫn ổ đĩa đã chỉ định). object.GetFileName(pathspec) Tham số object Bắt buộc. Nên là
Phương thức GetFile trả về một đối tượng File tương ứng với một file trong đường dẫn đã chỉ định. object.GetFile(filespec) Tham số object Bắt buộc. FileSystemObject mong đợi
Phương thức GetExtensionName trả về một chuỗi chứa phần mở rộng của thành phần cuối cùng của đường dẫn. object.GetExtensionName(path) Tham số object Bắt buộc. trả lời
Phương thức GetDriveName trả về một chuỗi chứa tên ổ đĩa trong đường dẫn đã chỉ định. object.GetDriveName(path) Tham số object Bắt buộc. Nên là FileSystemObject
Phương thức GetDrive trả về một đối tượng Drive tương ứng với ổ đĩa trong đường dẫn đã chỉ định. object.GetDrive tham số drivespec đối tượng Bắt buộc. Nên là FileSystemO
Phương thức GetBaseName trả về một chuỗi chứa tên cơ sở (không có phần mở rộng) của tệp hoặc thư mục trong thông số đường dẫn được cung cấp. object.GetBaseName(path) Tham số object Bắt buộc
Phương thức GetAbsolutePathName trả về đường dẫn đầy đủ và rõ ràng từ đường dẫn được chỉ định. object.GetAbsolutePathName(pathspec) Đối tượng tham số
Phương thức FolderExists trả về True nếu thư mục được chỉ định tồn tại; nếu không, nó trả về False. object.FolderExists(folderspec) Tham số object Bắt buộc
Phương thức FileExists trả về True nếu tệp được chỉ định tồn tại; nếu không, nó trả về False. object.FileExists(filespec) Tham số object Bắt buộc. Nên là FileS
Tôi là một lập trình viên xuất sắc, rất giỏi!