【发布时间】:2017-12-16 18:14:46
【问题描述】:
我想用 2 条不同的路径编写我的程序。所以,我就这样进行了:
std::string path1 = strcat(std::getenv("APPDATA"),"\\myprog.exe") ;
std::string path2 = strcat(std::getenv("APPDATA"),"\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\myprog.exe") ;
当我打印时,我得到:
C:\Users\thispc\AppData\Roaming\myprog.exe
C:\Users\thispc\AppData\Roaming\myprog.exe\Microsoft\Windows\Start Menu\Programs\Startup\myprog.exe
而不是:
C:\Users\thispc\AppData\Roaming\myprog.exe
C:\Users\thispc\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\myprog.exe
Dietmar Kühl 的解决方案:
std::string path1 = std::getenv("APPDATA") + std::string("\\myprog.exe");
Oliver Charlesworth 的解释:
strcat() 改变第一个变量
【问题讨论】:
-
您显然将第一次调用的结果更改为
std::getenv()(我认为这实际上是非法的)。你的意思是写std::string path1 = std::getenv("APPDATA") + std::string("\\myprog.exe");之类的东西吗? -
strcat修改第一个参数指向的字符串。这在一般情况下是合法的,但在这种特殊情况下不是 - 您不知道为它分配了多少存储空间。
标签: c++ environment-variables getenv