在我的项目中,我使用通过指定其文件名来加载纹理。现在,我创建了这个函数const char* app_dir(std::string fileToAppend);
,它返回main
sargv[0]
并将应用程序名称更改为fileToAppend
. 由于无法使用 char* 轻松进行字符串操作,因此我使用std::string
. 我的纹理加载器使用 const char* 作为文件名,因此需要切换回 c_str(),现在它会生成一系列 ASCII 符号字符(错误)。app_dir()
我已经通过将返回类型更改为来解决了这个问题std::string
。但为什么会这样?
编辑
示例代码:
//in main I did this
extern std::string app_filepath;
int main(int argc, char** arv) {
app_filepath = argv[0];
//...
}
//on other file
std::string app_filepath;
void remove_exe_name() {
//process the app_filepath to remove the exe name
}
const char* app_dir(std::string fileToAppend) {
string str_app_fp = app_filepath;
return str_app_fp.append(fileToAppend).c_str();
//this is the function the generates the bug
}
正如我之前所说,我已经通过将其返回类型更改为 std::string 来实现功能。