Streams, Strings und UTF-8

Floele

Cadet 3rd Year
Registriert
Aug. 2005
Beiträge
40
Hi.

Ich möchte gerne folgendes mit C++ machen:
Eine Datei einlesen -> irgendwas mit den Daten anstellen -> die bearbeiteten Daten wieder in eine Datei schreiben. Das ganze soll allerdings auch mit UTF-8 kodierten Dateien funktionieren, und das tut es im Moment nicht. Ich weiß nicht woran es liegt, möglicherweise ist sowas mit den normalen Strings in C++ nicht möglich?


Hier mal der Code:

Code:
#include <cstdlib>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;


int main()
{
	// Datei einlesen
	
	ifstream file_input("einedatei.txt",ios::binary);
	string line, file_contents;
	
	if(file_input.bad())
	{
	  //exit
	}
	else
	{
	 do
	     {
	        getline(file_input,line);
	        file_contents += (line + "\n");
	     }
	     while(file_input);
	}
	file_input.close();
	
	
	// Datei ausgeben
	
	stringstream out;
	
	out << file_contents << "<- ein string der utf-8 daten enthalten sollte" << endl;
	
	
	ofstream file_output;
	
	file_output.open("eineanderedatei.txt",ios::binary);
	if(file_output.bad())
	{
	  cout << "Error when trying to save the output file!" << endl;
	  //exit
	}
	

	while(out.good())
	{
	  getline(out,line);
	  file_output << line << "\n";
	}
	file_output.close();
}
 
Beim vielen hin-und-her-probieren habe ich doch noch was rausgefunden (Problem also gelöst :) ). Und zwar war das Problem nur, dass die Funktion isspace() (und auch isdigit() ) im Zusammenhang mit UTF-8 kodierten Daten nicht richtig funktioniert was dazu geführt hat, dass die Daten nicht korrekt eingelesen (bzw. verarbeitet) werden konnten. Habe mir entsprechende Ersatzfunktionen gebastelt und jetzt geht alles.
 
Zurück
Oben