Fórumok
Sziasztok!
Régi, DOS-ban szerkesztett szöveges fájljaimat szeretném a Linux-os (UBUNTU 8.04) környezetemhez konvertálni.
Írtam hozzá egy kezdetleges progit, de még nem működik. Próbaképpen csak az 'é' betűt konvertálom, de amiatt, hogy az UTF-8 több bájton ábrázolja a magyar ékezetes karaktereket, nem tudom egy sima "char" típusú változóba rakni a karaktert.
Ez a forráskód:
#include <fstream>
using namespace std;
int main() {
ifstream inFile ("magyar.inc", ios::in | ios::binary);
ofstream outFile;
outFile.open ("magyar.txt", ios::out | ios::binary);
char* ch = new char;
while(!inFile.eof() && inFile.read(ch, 1)) {
if (*ch == (char)130) {
*ch = 'é';
outFile.write(ch, 1);
} else {
outFile.write(ch, 1);
}
}
inFile.close();
outFile.close();
delete ch;
}
Fordításkor ezeket a figyelmeztetéseket adja a g++ fordító:
warning: multi-character character constant
src/main.cpp: In function ‘int main()’:
src/main.cpp:14: warning: overflow in implicit constant conversion
Hogyan tudnám az "é" betűt a kimeneti fájlban megjeleníteni?
Hozzászólások
> nem tudom egy sima "char" típusú változóba rakni a karaktert.
Akkor rakd többe.
Egyébként: http://billposer.org/Software/uni2ascii.html#related
Gondolom ASCII helyett ISO-8859-2-t szerettél volna írni. Csak azért, mert az ASCII hét bites, és az UTF-8-ban az első 128 karakter lefedi a teljes ASCII kódtáblát.
Amire szükséged van (ISO-88592 az ugyanaz, mint a latin2):
iconv -f latin2 -t utf8 < régi_fájl > új_fájl
Igyvan.
Köszönöm a segítségeteket! Most már alakul.
Javaslom az iconv + dos2unix kombót. Az első a karaktereket, a második a sorvégeket alakítja át. Persze nem szeretném elvenni a kedved a programozástól a világért sem.
Üdv,
Dw.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Azt nehéz lesz elvenni. Kösz!
iconv-nak van libje is, a dos2unix -ot meg programbol nagyon konnyu megvalositani: a \r karaktert kell irtani.
--
Kösz!
Remélem dokumentációja is van.
Ha mas nem, a /usr/include/iconv.h nagyon hasznos olvasmany... :)
--