簡體   English   中英

使用C ++在iOS應用程序中找不到的文件夾中的文件

[英]Files in folders not found in iOS app using C++

我正在嘗試使用std :: ifstream在主要使用C ++編寫的iOS應用程序中讀取存儲在assets文件夾及其子文件夾中的文件(相同的代碼也用於其他非iOS項目),但是找不到它們。 示例:有一個文件assets / shaders / ortho2d.vert ,我正在嘗試加載它:

std::ifstream vertFStream( vertFile ); // vertFile's contents is "assets/shaders/ortho2d.vert"
if (!vertFStream) {
    std::cerr << vertFile << " missing!" << std::endl;
    exit( 1 );
}

我已將assets文件夾作為藍色文件夾添加到XCode項目中,它顯示在Targets-> Copy Bundle Resources中。

嘗試這個:

NSBundle *b = [NSBundle mainBundle];
NSString *dir = [b resourcePath];
NSArray *parts = [NSArray arrayWithObjects:
                  dir, @"assets", @"shaders", @"ortho2d.vert", (void *)nil];
NSString *path = [NSString pathWithComponents:parts];
const char *cpath = [path fileSystemRepresentation];
std::string vertFile(cpath);
std::ifstream vertFStream(vertFile);

您可能需要檢查應用程序運行位置的相對路徑,並可能使用完整路徑來確保找到該文件。

打開失敗的事實並不一定意味着找不到文件,此時它可能無法讀取。 (權限不正確或文件已鎖定)。

退出(1)是相當激烈的。

抱歉,但有些標點符號:

  1. 在iOS上使用來自C ++的文件系統調用非常不鼓勵安全問題和從安全角度來看的有限支持。 調用文件系統應該在你知道正確的iOS應用程序之后完成
    文件夾布局。 (捆綁,資源,文檔文件夾等等)否則會失敗.c)你可以混合使用c ++和objC,但最終不是一種正確的方法。
  2. 在iOS下你必須使用swift或objC(在非常有限的情況下除外)
  3. 使用iOS API,就像在android下使用java一樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM