繁体   English   中英

将 const char* 转换为 NSString Objective-C 时获取 null

[英]Getting null when converting const char* to NSString Objective-C

我正在尝试将从我拥有的 C++ 方法中获得的 const char* 转换为 Objective-C 中方法中的 NSString。 这是来自 C++ 的方法:

#define EXPORT __attribute__((visibility("default")))
EXPORT
string getAudioWmark(const char* _filename)
{
    string filename = string(_filename);
    string result;
    result = get_watermark(filename, "");
    
    return (result.c_str());
}

这是在调试器视图中返回的结果:

result  std::string "pattern  0:00 f59e26b2f4668d02bd33e03a1c0d8892 0.774 0.774 CLIP-A\n\n"

这是 Objective-C 的 .h 文件中方法的声明:

extern const char* getAudioWmark(const char* filename);

@interface WatermarkLib : NSObject

- (void)getAudio:(NSString*)filename;

@end

这是该方法的 .mm 实现:

- (void)getAudio:(NSString*)filename {
    
    const char *cString = [filename cStringUsingEncoding:NSASCIIStringEncoding];
    NSString* externalString = [NSString stringWithCString:getAudioWmark(cString) encoding:NSUTF8StringEncoding];
    
    NSLog(@"Exito! %@", externalString);
}

“externalString”为空,这就是我要解决的问题。

这应该可以帮助你。

const char *cString = filename.UTF8String;

但请确保文件名有内容,否则它必须导致 null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM