c ++使用字符串缓冲区文件名更改ofstream的目录

c++ change directory of ofstream with a string buffer filename

我有这行代码

    std::ofstream output(p_strFilename.c_str());

其中 p_strFilename 是根据函数参数定义的

    foo(const std::string &p_strFilename)

正在当前工作目录中保存一堆文件。但是我想在该目录中输入一个步骤并将文件保存在其中。我试过了

    std::ofstream output("folder1\"+p_strFilename.c_str())

这是给了我

    error: invalid operands of types ‘const char [9]’ and ‘const char*’ to binary ‘operator+’

我猜这是将目录读取为 9 个字符而不是字符串。

第一个问题:这样输入目录正确吗? (双反斜杠并且从 CWD 开始而不是主目录)

第二个问题:如何解决我的编译错误?

我认为你只需要在连接后转换为 c_string:

std::ofstream output(("folder1/"+p_strFilename).c_str())

希望对您有所帮助! :)

不要使用 .c_str()

operator+ 不适用于两个 char*,您必须使用 std::string operator+ 来添加这样的字符串。

std::ofstream output("folder1\"+p_strFilename);

(One of the two strings being concatenated must be a std::string object)