2010-01-15 3 views
3

J'ai un simple fichier texte, qui suit le contenuOn lit une ligne fichier, en utilisant le style de flux

word1 word2 

Je dois le lire est la première ligne dans mon application C++. Après les travaux de code, ...

std::string result; 
std::ifstream f("file.txt"); 
f >> result; 

... mais la variable résultat sera égal à "mot1". Il devrait être égal à "mot1 mot2" (première ligne du fichier texte) Oui, je sais, que je peux utiliser la fonction readline (f, résultat), mais est-il possible de faire la même chose, en utilisant >> style. Cela pourrait être beaucoup plus joli. Possible, certains manipulateurs, je ne sais pas, seront utiles ici?

Répondre

2

Non, il n'y en a pas. Utilisez getline(f, result) pour lire une ligne.

4

Oui, définissez une classe de ligne et définissez l'opérateur >> pour cette classe.

#include <string> 
#include <fstream> 
#include <iostream> 


struct Line 
{ 
    std::string line; 

    // Add an operator to convert into a string. 
    // This allows you to use an object of type line anywhere that a std::string 
    // could be used (unless the constructor is marked explicit). 
    // This method basically converts the line into a string. 
    operator std::string() {return line;} 
}; 

std::istream& operator>>(std::istream& str,Line& line) 
{ 
    return std::getline(str,line.line); 
} 
std::ostream& operator<<(std::ostream& str,Line const& line) 
{ 
    return str << line.line; 
} 

void printLine(std::string const& line) 
{ 
    std::cout << "Print Srting: " << line << "\n"; 
} 

int main() 
{ 
    Line aLine; 
    std::ifstream f("file.txt"); 
    f >> aLine; 

    std::cout << "Line: " << aLine << "\n"; 
    printLine(aLine); 
}