2014-05-09 5 views
0

J'ai travaillé sur un programme qui crée et stocke des informations sur des fichiers. Mon seul problème qui m'empêche d'aller plus loin est le nom des fichiers. Je peux nommer manuellement le fichier mais je ne peux pas utiliser une variable (n'importe lequel ferait: nombre, caractère n'importe quoi) pour le nom des fichiers, et pour le contenu du fichier. Voici les 4 lignes de code qui me ont poussé les murs pendant un certain temps maintenant:Comment utiliser une variable comme nom de fichier?

ofstream file; 
file.open ("txt.txt"); \\I can manually create names, but that's not what I'm after 
file.write >> fill; \\I attempted to use a 'char' for this but it gives errors based on the "<<" 
file.close(); 

Ceci est ma première fois d'utiliser ce site. Désolé d'avance.

+0

Sidenote: utilisez // à la place pour les commentaires dans le code. – herohuyongtao

+0

Sidenote 2: C'est juste 'file << fill'. Vous n'avez pas besoin du '.write', et le' '' pointe vers le fichier si la sortie va dans le fichier. (Il pointe 'fichier >> 'quand vous lisez FROM le fichier. Vous avez besoin d'un' ifstream' pour Input) – MSalters

Répondre

1

Vous pouvez utiliser des variables de type chaînes et demander à l'utilisateur une saisie au clavier pour nommer votre fichier et remplir le contenu.

#include <iostream> 
#include <fstream> 

using namespace std; 

int main(int argc, char** argv) { 

    string fileName; 
    string contents; 

    cout << "What would you like the file name be? : "; 
    cin >> fileName; 

    cout << "\nPlease write the contents of the file: "; 
    cin >> contents; 

    ofstream file; 
    file.open(fileName.c_str());  // provide the string input as the file name 
    if(file.is_open()){ // always check if the program sucessfully opened the file 
     file << contents << endl; // write the contents into the file 
     file.close(); // always close the file! 
    } 

    return 0; 
} 

Notez que ce programme de lecture d'entrée utilisateur pour le contenu jusqu'à ce qu'il atteigne un caractère de saut de ligne '\n' ou espace blanc ' '. Donc, si vous écrivez HELLO WORLD! comme entrée pour le contenu, il ne lira que HELLO.

Je vais laisser comment lire la ligne entière, y compris les espaces comme exercice pour vous. Je vous suggère également de prendre un livre C++ et d'étudier les entrées/sorties de fichiers.

1

Cela dépend vraiment? C++ 11 ou C++ 03?

d'abord créer un string:

std::string fname = "test.txt"; 

En C++ 11, vous pouvez simplement faire:

file.open(fname); 

Cependant, en C++ 03, vous devez:

file.open(fname.c_str()); 
Questions connexes