Istream-Iteratoren und "Whitespaces"



  • Hallo,
    Bekanntlich werden "Whitespaces" (Leerzeichen, Tabs, Zeilenumbrüche) beim auslesen einer Datei mithilfe von Istream-Iteratoren ignoriert. Gibt es eine Möglichkeit diese Zeichen trotzdem mitauszulesen (Unter Verwendung der STL)?

    string ReadFile()
    	{
    		string output;
    
    		ifstream TargetFile(m_strFileName.c_str()); //m_strFileName ist der Name der auszulesenden Datei
    		istream_iterator<string> itPosition(TargetFile), itEnd;
    
    		if (itPosition == itEnd)
    			output = "Error: File not found!";
    		else
    			while(itPosition != itEnd)
    			{
    				output += *itPosition;
    				itPosition++;
    			}
    
    		return output;
    
    	}
    


  • Naja,

    AFAIK ist es möglich alle zeichen auszulesen ich mache das meist so:

    void ReadFile(std::string& filename, std::string& data)
     {
       data.clear();
    
       std::ifstream input_file(filename.c_str(),std::ios::binary) 
     // std::ios::binary gibt an das alle zeichen gelesen werden nicht nur die darstellbaren.
    
       while(!input_file.eof())
         data += input_file.get();
     }
    

    MfG eViLiSSiMo



  • Hallo,
    das sollte gehen:

    ifstream file("datei.txt");
    file.unsetf(ios::skipws);
    istream_iterator<char> in(file), end;
    while (in != end)
    {
    	cout << *in++;
    
    }
    


  • Ja, so funktionierts!

    Herzlichen Dank!


Anmelden zum Antworten