【问题标题】:How to get a specific attribute from a CFString如何从 CFString 中获取特定属性
【发布时间】:2012-03-09 11:58:47
【问题描述】:

我想知道一个字符串是否是单字节编码。 CFShowStr 可以完成这项工作,但它会将消息输出到控制台。 CFShowStr 函数输出消息是这样的,IsEightBit 项是我想要的:

Length 7    
IsEightBit 1    
HasLengthByte 0    
HasNullByte 1    
InlineContents 0    
Allocator SystemDefault    
Mutable 0    
Contents 0x104f9fef3    

【问题讨论】:

    标签: iphone cocoa-touch cocoa core-foundation cfstring


    【解决方案1】:

    我不认为八位标志意味着你认为它的作用。请参阅CFShowStr 的文档:

    使用此函数了解 CFString 的特定属性 调试期间的对象。这些属性包括:(…) 最初是否为 8 位字符串,如果是,是否为 C (HasNullByte) 或 Pascal (HasLengthByte) 字符串。

    我不知道 CFString 内部使用什么编码。你为什么关心八位?因为在大多数情况下你不应该这样做。

    【讨论】:

    • 以下代码部分使用了弃用的 Carbon API,我想用非 Carbon 函数重写它。 if ((GetScriptVariable(smSystemScript, smScriptFlags) & smsfSingByte) == 0){}由于某种原因,系统中仍然使用多字节编码
    • 代码上下文是什么,{} 里面是什么?你也许可以重写代码而不用窥探实现细节。
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 2021-05-02
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多