草庐IT

objective-c - 在没有 initWithCString 的情况下将 char* 转换为 NSString 的正确方法?

我正在将结果列表从SQLite3数据库中提取到UITableView中。我从数据库中提取文本的代码如下:char*menuNameChars=(char*)sqlite3_column_text(statement,1);NSString*menuName=[[NSStringalloc]initWithUTF8String:menuNameChars];NSLog(@"Retrieved%s,%@fromDB.",menuNameChars,menuName);当我使用initWithUTF8String时,有时会从数据库中正确复制信息。但有时,信息可以从char*中正确显示,但不能

String和Const char*参数类型选择的合理性对比

在编程中,我们经常需要处理字符串类型的参数。在C++中,有两种常见的表示字符串的参数类型,即string和constchar*。本文将对比这两种参数类型的特点,分析其在不同情况下的合理性,以便程序员能够根据实际需求做出正确的选择。一、string参数类型1.特点string是C++标准库提供的字符串类,它封装了字符串的操作和管理。使用string参数类型具有以下特点:提供了丰富的字符串操作函数,如查找、比较、连接等,方便字符串处理。支持动态内存管理,自动进行内存分配和释放,避免了手动管理内存的繁琐。可以方便地进行赋值、拷贝和传递,具有较好的可读性和可维护性。2.适用场景当需要进行字符串拼接、查

c - 由于其范围,使用 unsigned char 而不是 char

我一直在开发一个小型的纯C客户端应用程序(我的第一个:/),它使用TCP套接字与服务器进行通信。服务器向我发送一个数据包(C结构),其中第一个字节包含数据包的大小。问题是服务器使用unsignedchar来表示数据包的大小,因为char是有符号的(从-128到+127)并且+127不足以表示在某些数据包中可以达到255的大小。=>我需要一个无符号字符缓冲区;在Linux中,recv()函数的第二个参数是void*,这意味着我可以声明一个void*buffer并且没有问题。但是Windows(MinGW)中的recv()具有char*而不是void*。这给我警告“参数类型不匹配:不兼容的

c# - unsigned char 到 char * 用于从 C++ WinSock 客户端到 C# 服务器的 TCP

我遇到了一个问题,我认为这只是从unsignedchar转换为char*的一个例子。但是,我没有设法以可行的方式做到这一点!我正在做的是将数据作为unsignedchar[64]读入C++程序。然后需要通过TCP套接字将其传输到等待中的C#TcpListener(我也试过在Linux上使用netcat和Hurcules进行监听。监听器(无论我使用哪个)接收不到任何有意义的信息!如果我char*buffer2=reinterpret_cast(buffer);我得到了一些传输,但它是无意义的,当我在调试期间检查buffer2时它只包含一个“0”。下面是一些使用我自己的SocketClie

JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t)

JSONparseerror:Illegalcharacter((CTRL-CHAR,code31)):onlyregularwhitespace(\r,\n,\t)isallowedbetweentokens;nestedexceptioniscom.fasterxml.jackson.core.JsonParseException:Illegalcharacter((CTRL-CHAR,code31)):onlyregularwhitespace(\r,\n,\t)isallowedbetweentokensat[Source:(PushbackInputStream);line:1,co

将 uint16_t 转换为 char[2] 以通过套接字发送 (unix)

我知道大致上有一些东西..但我的大脑受伤了,我找不到任何东西来做这件事......我正在尝试通过unix套接字发送一个16位无符号整数。为此,我需要将uint16_t转换为两个字符,然后我需要在连接的另一端读取它们并将其转换回来转换为unsignedint或uint16_t,此时它使用2bytes还是4bytes并不重要(我运行的是64位,这就是为什么我不能使用unsignedint:)顺便说一句,我在C中这样做谢谢 最佳答案 为什么不使用掩码和移位将其分解成字节?uint16_tvalue=12345;charlo=value&0

Swift switch char{ case "\u{e2} :

letsplitLines=line.split(separator:"\u{e2}")case"\u{e2}":print("FoundBadReturn")letnewText=text.replacingOccurrences(of:"\u{e2}",with:"\n")我正在UITextView中处理RTF文档。我正在尝试使用\n更改包含\u{e2}字符的字符串这些行似乎都不适用于字符串 最佳答案 调试器打印具有误导性。该字符是"\u{2028}"'LineSeparator'而不是"\u{e2}"。调试器这样做是因为0xE

ios - 在 swift 中声明 unsigned char 数组

我以前在obj-c中做的事情:unsignedcharcHMAC[CC_SHA1_DIGEST_LENGTH];我在swift中尝试的内容在这里找到unsignedcharinSwift:letcHMAC=[CUnsignedChar](count:CC_SHA1_DIGEST_LENGTH)但是这不会构建,因为调用中的额外参数计数关于如何将第一个代码转换为swift的任何想法? 最佳答案 您正在调用Array构造函数init(count:Int,repeatedValue:T)还有两个错误:您忘记了repeatedValue:参数

从 const char* 转换为 Swift 字符串

我有一个c函数,我从一个返回constchar*的桥接头访问它:constchar*get_c_string();然后我尝试将它转换为Swift字符串:letstr=String.fromCString(UnsafePointer(get_c_string()))print(str)...但它只是打印垃圾:Optional("\u{14}\0\0")我可以找到如何将Swift字符串传递给C而不是相反的方法。如何将constchar*转换为Swift字符串?谢谢! 最佳答案 您的Swift代码是正确的,您可以将其稍微缩短为//Swif

swift - 在 Swift 中将字符串转换为 UnsafeMutablePointer<char_t>

我正在使用第三方cAPI我正在尝试使用一个简单的字符串调用其中一个函数。像这样:some_c_func("aString");我遇到构建错误:Type'UnsafeMutablePointer'doesnotconformtoprotocol'StringLiteralConvertible'我看到了一些关于在String或类似转换上使用utf8的建议,这些建议已经接近尾声,但出现以下错误:some_c_func("aString".cStringUsingEncoding(NSUTF8StringEncoding));'UnsafePointer'isnotconvertibleto