【发布时间】:2018-01-15 18:45:42
【问题描述】:
我的代码有问题。
我要做的是动态获取可执行路径,然后将其分配给char* n_argv 数组。我确实已经尝试了一段时间,但决定在这里问。抱歉,如果这是一个不恰当的问题。
int main (int argc, char** argv){
char szPathToExe[MAX_PATH];
GetModuleFileNameA(NULL, szPathToExe, MAX_PATH);
std::string path(szPathToExe);
path.append("other_argument");
char *n_argv = path.c_str();
argv = n_argv;
}
关于如何解决这个问题的任何想法?提前谢谢!
【问题讨论】:
-
只需将
wchar_t const *用于n_argv数组(注意"other_argument"不能分配给char *)。 -
使用
GetModuleFileNameA获取字符版本。 -
正如@manni66 所说,使用
GetModuleFileNameA,但也要考虑到这会将路径名中的任何Unicode 字符转换为基于代码页的字符。这是你想做的吗?也许您应该在项目选项中选择它时始终使用 Unicode。 -
在 windows 代码中,您通常应该坚持使用 wchar_t 而不是转换为 char。如果您需要 char 则使用 gkpln3 answer中的函数
-
n_argv不是数组。它是一个指针。
标签: c++