如何在C++中拼接路径和不同的文件名

5
这是我的代码:
double loglikelihood = 0; 
double loglikelihood1 = 0;
double THRESHOLD = 5;
double c = THRESHOLD + 1; 

std::ofstream llh_file;
std::ofstream myfile;   
const char *path= "path_of_file_to_be_saved";
myfile = ( string(path) + flags.inference_result_file_.c_str() ); 

for (int iter = 0; c > THRESHOLD; ++iter) {     
    std::cout << "Iteration " << iter << " ...\n";  
    loglikelihood = 0; 

    llh_file.open(myfile.c_str() );
    loglikelihood += sampler.LogLikelihood(&document);
    llh_file << "THE LOGLIKELIHOOD FOR ITER " << iter << " " << "IS: " << loglikelihood << "\n";                  
    llh_file.close();    

我是C++的新手。我有一个包含不同文件名的文件夹。我想在for循环中进行一些处理,并将结果保存在文件夹中,文件名与输入文件完全相同。我怎么做?请帮忙!


3
请阅读有关使用C ++进行编程的更多信息;至少使用C++11版本;了解std :: string,请参见此处 - Basile Starynkevitch
1
完成这个之后,可以查看Boost.Filesystem - DevSolar
文件夹是特定于操作系统的;POSIX和Linux有目录,而不是文件夹。你甚至可以没有任何类型的文件夹(甚至没有目录)来实现C++。在POSIX上,考虑使用readdir(3)等等...和nftw(3)。 - Basile Starynkevitch
请参考这里。也许我有点挑剔,但如果你在谷歌上搜索“读取目录”,你会立即找到我提到的内容。你的问题应该说明你感兴趣的操作系统。或者考虑使用POCOQt。顺便说一句,C++11不知道文件夹或目录。 - Basile Starynkevitch
1个回答

5

要连接字符串,请使用std::string而不是char*。

#include <string>
#include <iostream>
#include <fstream>
int main() {
    std::string path = "path";
    std::string file = "file.txt";
    std::string myfile = path + "/" + "file.txt";
    std::string fname = "test.txt";
    std::ofstream f(fname);
    f << myfile;
}

这将会在名为test.txt的文件中写入"path/file.txt"。


1
这正是我想要的。但是,我想将它保存在一个文件中。这是打印输出。如何将其保存在一个文件中,以输入文件名命名?输入文件位于flags.inference_result_file_.c_str()中。我正在尝试将其保存在一个文件中。 - Sanathana
1
编辑以将字符串写入文件。但您需要根据自己的代码进行调整。我不会为您完成所有工作 :) - Gabrielle de Grimouard
哈哈,我解决了 ;) 感谢你的帮助 :) - Sanathana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接