###前提、実現したいこと
C++とNativeActivityを使ったAndroidアプリの開発。
ファイル検索をするための文字列を生成したい。
###発生している問題、エラーメッセージ
stringクラスのoperator+が正常な値を返さず、結合する前の文字列を返してしまう。
(下記のコードではstartに「/storage/emulated/0/Android/data/(アプリのパッケージ名)/files」が入っている場合、findstartにもstartと同じ文字列が入ってしまう)
なおoperator+=も同様に文字列を結合してくれない。
また、他の関数では正常に結合された文字列を返すので、この関数のみで起こっている問題の模様。
###事象の発生しているコード
DxSearchDir.cpp
1 vector<string> EnumFiles(const string& start) 2 { 3 static const string addfindstart = u8"/*"; 4 static const string adddirsplit = u8"/"; 5 6 vector<string> res; 7 res.clear(); 8 9 DWORD_PTR handle; 10 FILEINFO filebuf; 11 12 if (start.empty()) return res; 13 14 //ここで文字列結合が正常に行われない 15 string findstart = start + addfindstart; 16 17 handle = FileRead_findFirst(findstart.c_str(), &filebuf); 18 19 if (handle == -1) return res; 20 21 do 22 { 23 if (filebuf.DirFlag) 24 { 25 string dirname = filebuf.Name; 26 27 if (dirname.compare(".") != 0 && dirname.compare("..") != 0) 28 { 29 vector<string> addfile = EnumFiles(start + adddirsplit + dirname); 30 for (size_t i = 0, is = addfile.size(); i < is; i++) res.push_back(addfile[i]); 31 } 32 } 33 else res.push_back(start + adddirsplit + filebuf.Name); 34 } while (DXFUNC_BOOL(FileRead_findNext(handle, &filebuf))); 35 36 FileRead_findClose(handle); 37 38 return res; 39 }
###試したこと
Visual Studioを最新版に更新した。
プラットフォームツールセットをClang 5.0に変更した。
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2017の2018年4月3日現在の最新版を使用。
テストに使用した端末はXperia XZ、Androidのバージョンは8.0。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。