Filepath with variable inside c++

时间:2016-08-31 17:18:47

标签: c++ filepath

I am trying to use a variable in my file path.

I have succeeded in adding one for the name of the files, but not for the folder name.

string utilisateur, mot_de_passe;
int gr;

cout << " Entrer un nom utilisateur:"; cin >> utilisateur;
cout << " Entrer un mot de passe :"; cin >> mot_de_passe;
cout << "Choisir un groupe:"; cin >> gr;

ofstream dossier;
if (gr == 1)
{
    dossier.open("C:/Users/titib/Contacts/Desktop/Projet informatique/groupe/" + utilisateur + ".txt");
    dossier << utilisateur << endl << mot_de_passe << endl << gr << endl;

I would like to use the variable gr as the name of the folder.

dossier.open("C:/Users/titib/Contacts/Desktop/Projet informatique/groupe/**gr**" + utilisateur + ".txt");

3 个答案:

答案 0 :(得分:2)

This should work just fine:

std::string FilePath = "C:/Users/titib/Contacts/Desktop/Projet informatique/groupe/" + std::to_string(gr)  + "/" + utilisateur + ".txt";
dossier.open(FilePath);

答案 1 :(得分:1)

您需要将gr转换为std::string,然后才能将其附加到其他字符串。在C ++ 11之前,您可以使用std::ostringstream,例如:

#include <sstream>

std::ostringstream oss_gr;
oss_gr << gr;

dossier.open("C:/Users/titib/Contacts/Desktop/Projet informatique/groupe/" + oss_gr.str() + "/" + utilisateur + ".txt");

或者,如果您使用的是C ++ 11或更高版本,则可以改为使用std::to_string()

dossier.open("C:/Users/titib/Contacts/Desktop/Projet informatique/groupe/" + std::to_string(gr) + "/" + utilisateur + ".txt");

或者,在任何C ++版本中,您都可以使用std::ostringstring格式化整个路径:

std::ostringstream oss_path;
oss_path << "C:/Users/titib/Contacts/Desktop/Projet informatique/groupe/" << gr << "/" << utilisateur << ".txt";
dossier.open(oss_path.str());

答案 2 :(得分:0)

好的,我终于成功创建了一个文件。 感谢Remy Lebeau。

实际上我改变了一些事情:

  • gr现在是名字集团 -groupe是一个避免转换的字符串

我用过的目录。 这里是代码

std::ostringstream gr;

        gr << "C:/Users/titib/Contacts/Desktop/Projet informatique/" << groupe;

        CreateDirectory(gr.str().c_str(), NULL);

        dossier.open("C:/Users/titib/Contacts/Desktop/Projet informatique/" + groupe + "/" + utilisateur + ".txt");
        dossier << utilisateur << endl << mot_de_passe << endl << groupe << endl;

再次感谢。