草庐IT

basic_handle

全部标签

c++ - basic_ios 上标志的语义

我发现自己对rdstate()标志反复感到困惑-good()、bad()、eof()、fail()-以及它们在basic_ios::operator!、operatorbool和operatorvoid中的表达方式*。谁能让我摆脱痛苦并解释一下,这样我就不必再三思了? 最佳答案 有三个标志指示错误状态:badbit表示流出现了严重问题。它可能是缓冲区错误或向流提供数据的任何错误。如果设置了此标志,您可能不会再使用该流。failbit表示从流中提取或读取失败(或输出流的写入或插入),您需要注意该失败。eofbit表示输入流已经结束,没

c++ - basic_ios 上标志的语义

我发现自己对rdstate()标志反复感到困惑-good()、bad()、eof()、fail()-以及它们在basic_ios::operator!、operatorbool和operatorvoid中的表达方式*。谁能让我摆脱痛苦并解释一下,这样我就不必再三思了? 最佳答案 有三个标志指示错误状态:badbit表示流出现了严重问题。它可能是缓冲区错误或向流提供数据的任何错误。如果设置了此标志,您可能不会再使用该流。failbit表示从流中提取或读取失败(或输出流的写入或插入),您需要注意该失败。eofbit表示输入流已经结束,没

c++ - 以 C++03 为目标时,使用 std::basic_string<t> 作为连续缓冲区是否合理?

我知道在C++03中,技术上std::basic_string模板不需要具有连续内存。但是,我很好奇实际上利用这种自由的现代编译器有多少实现。例如,如果想使用basic_string来接收某些CAPI的结果(如下例),分配一个vector只是为了立即将其转换为字符串似乎很愚蠢。例子:DWORDvalueLength=0;DWORDtype;LONGerrorCheck=RegQueryValueExW(hWin32,value.c_str(),NULL,&type,NULL,&valueLength);if(errorCheck!=ERROR_SUCCESS)WindowsApiExc

c++ - 以 C++03 为目标时,使用 std::basic_string<t> 作为连续缓冲区是否合理?

我知道在C++03中,技术上std::basic_string模板不需要具有连续内存。但是,我很好奇实际上利用这种自由的现代编译器有多少实现。例如,如果想使用basic_string来接收某些CAPI的结果(如下例),分配一个vector只是为了立即将其转换为字符串似乎很愚蠢。例子:DWORDvalueLength=0;DWORDtype;LONGerrorCheck=RegQueryValueExW(hWin32,value.c_str(),NULL,&type,NULL,&valueLength);if(errorCheck!=ERROR_SUCCESS)WindowsApiExc

error-handling - Go 错误处理、类型断言和 net 包

我正在学习并试图了解如何从通用错误类型中获取更详细的错误信息。我将使用的示例来自net包,特别是DialTimeoutfunction.签名是funcDialTimeout(network,addressstring,timeouttime.Duration)(Conn,error)errortype只定义了一个Error()string函数。如果我想查明DialTimeout失败的确切原因,我该如何获取该信息?我发现我可以使用类型断言来获取net.Error特定的错误:con,err:=net.DialTimeout("tcp",net.JoinHostPort(address,"2

error-handling - Go 错误处理、类型断言和 net 包

我正在学习并试图了解如何从通用错误类型中获取更详细的错误信息。我将使用的示例来自net包,特别是DialTimeoutfunction.签名是funcDialTimeout(network,addressstring,timeouttime.Duration)(Conn,error)errortype只定义了一个Error()string函数。如果我想查明DialTimeout失败的确切原因,我该如何获取该信息?我发现我可以使用类型断言来获取net.Error特定的错误:con,err:=net.DialTimeout("tcp",net.JoinHostPort(address,"2

error-handling - Go 方法链和错误处理

我想在Go中创建一个方法链接API。在所有示例中,我都可以发现链式操作似乎总是成功,这是我无法保证的。因此,我尝试扩展这些以添加错误返回值。如果我这样做packagemainimport"fmt"typeChainstruct{}func(v*Chain)funA()(*Chain,error){fmt.Println("A")returnv,nil}func(v*Chain)funB()(*Chain,error){fmt.Println("B")returnv,nil}func(v*Chain)funC()(*Chain,error){fmt.Println("C")returnv

error-handling - Go 方法链和错误处理

我想在Go中创建一个方法链接API。在所有示例中,我都可以发现链式操作似乎总是成功,这是我无法保证的。因此,我尝试扩展这些以添加错误返回值。如果我这样做packagemainimport"fmt"typeChainstruct{}func(v*Chain)funA()(*Chain,error){fmt.Println("A")returnv,nil}func(v*Chain)funB()(*Chain,error){fmt.Println("B")returnv,nil}func(v*Chain)funC()(*Chain,error){fmt.Println("C")returnv

exception-handling - 在 Golang 中捕捉 panic

使用下面的代码,如果没有给出文件参数,第9行会引发panicpanic:runtimeerror:indexoutofrange符合预期。当直接将导致panic的东西(os.Args[1])传递给它时,我如何“捕捉”这种panic并处理它?很像PHP中的try/catch或Python中的try/except。我在StackOverflow上进行了搜索,但没有找到任何可以回答此问题的内容。packagemainimport("fmt""os")funcmain(){file,err:=os.Open(os.Args[1])iferr!=nil{fmt.Println("Couldnot

exception-handling - 在 Golang 中捕捉 panic

使用下面的代码,如果没有给出文件参数,第9行会引发panicpanic:runtimeerror:indexoutofrange符合预期。当直接将导致panic的东西(os.Args[1])传递给它时,我如何“捕捉”这种panic并处理它?很像PHP中的try/catch或Python中的try/except。我在StackOverflow上进行了搜索,但没有找到任何可以回答此问题的内容。packagemainimport("fmt""os")funcmain(){file,err:=os.Open(os.Args[1])iferr!=nil{fmt.Println("Couldnot