iOS - 在C ++中获取可写路径

时间:2016-09-02 08:55:18

标签: c++ ios native audioqueue

我正在用原生C ++编写iOS录音机,我无法使用Foundation API。

我需要这样的东西:

https://github.com/shannah/cn1-data-access-lib#database-creation-and-versioning

在iPhone上获取可写路径。

非常感谢你。

2 个答案:

答案 0 :(得分:1)

当然可以,但是自信地说这对我的客户来说是一项任务,他在核心课程中没有要求任何外部职能或桥梁或任何涉及基金会的事情。所以我必须构建一个audioqueue组件而不引用Foundation。

为了记录,我成功地做到了这一点:

        const char *home = getenv("HOME");
        const char *subdir = "/Documents/";
        const char *file = "recordedFile.caf";

        char *recPath = (char*)(calloc(strlen(home) + strlen(subdir) 
                              + strlen(file) + 1, sizeof(char)));

        strcpy(recPath, home); // copy string one into the result.
        strcat(recPath, subdir); // append string two to the result.
        strcat(recPath, file); // append string three to the result.

        //recordFilePath is our CFStringRef
        recordFilePath = CFStringCreateWithCString(0, recPath, kCFStringEncodingUTF8);

        //recorder is an AQRecorder class like the one from SpeakHere code sample
          recorder->StartRecord(recordFilePath);

答案 1 :(得分:0)

在评论OP之后,使用Objective-C ++的一个例子:

Utils.hpp:

#pragma once
#include <string>

std::string temporaryFilePath(const std::string &filename)

Utils.mm:

#import "Utils.hpp"
#import <Foundation/Foundation.h>

std::string temporaryFilePath(const std::string &filename)
{
    NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithUTF8String:filename.c_str()]];
    const char *rawFilePath = [filePath UTF8String];
    return rawFilePath;
}

WhereverYouWant.cpp:

#include "Utils.hpp"

...

std::string recordFilePath = temporaryFilePath("recordedFile.caf");