Const char连接和getenv()

时间:2016-04-03 13:50:52

标签: c++

我正在学习c ++的过程,因此我制作了一些程序/工具来在计算机上进行某些简单的操作。在这个例子中,我创建了一个程序,可以在计算机上找到浏览器(它将用于清除浏览器cookie等)。可能有更高级的方法来更有效地做到这一点,但我现在试图尽可能地保持这一点。

到目前为止,我试图找出目录" C:\ Program Files(x86)\ Google \ Chrome"存在。我使用getenv ("Program Files (x86)"将地址提供给程序文件目录,但如何添加地址的其余部分? 我不能使用+运算符进行连接,因为变量是const char *(bool PathIsDirectory()需要const char *作为参数)。

std::cout << "Searching for browsers..." << std::endl;
const char *chromePath;
chromePath = getenv ("ProgramFiles(x86)");

bool result = PathIsDirectory(chromePath);

if(result == true)
{
    std::cout << "-- Google Chrome - FOUND" << std::endl;
}
else
{
    std::cout << "-- Google Chrome - NOT FOUND" << std::endl;
}

1 个答案:

答案 0 :(得分:3)

您可以将getenv()的结果存储在std::string对象中(如中所述) 评论)。然后你可以使用+运算符添加路径的其余部分,如下所示:

#include <string>
//...
std::string chromePath = getenv ("ProgramFiles(x86)");
chromePath += "\\remaining\\path";
bool result = PathIsDirectory(chromePath.c_str());

请注意,您必须如上所示转义反斜杠。