Zapisywanie polskich znaków do pliku

0

Witam.
Piszę program, który ma za zadanie zapisywać wprowadzone do niego dane do plików. Niestety napotkałem problem w postaci obsługi polskich znaków.
Ni jak nie mogę sobie z nimi poradzić. Zawsze wyskakują krzaczki.
Oto kod:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

string word, slowo;


int main() {
    
    ofstream angfile;
    angfile.open ("angfile.txt", ios::out | ios::app);
    ofstream polfile;
    polfile.open ("polfile.txt", ios::out | ios::app);
       
    cout<<"Please enter english word: ";
    getline(cin,word);
    cout<<"Please enter polish word: ";
    getline(cin,slowo);
    
    angfile << word << endl;
    polfile << slowo << endl;
    
    angfile.close();
    polfile.close();
    
    getchar();
    return 0;
}

Problemu nie ma kiedy wpisuję słowo bezpośrednio:

 polfile << "ĄĆŻÓŁłą"; 

Domyślam się, że winę ponosi funkcja getline i klasa string, aczkolwiek nie mam pomysłu jak je zastąpić.
Próbowałem używać wstringów (wcin/wcout), ale wtedy kompilator odmawiał posłuszeństwa.

`wcin' undeclared (first use this function)

Używam Dev C++.

0

To nie jest wina C++, tylko Windows (konkretnie kodowanie).
Na Linux jest ok.

0

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

wstring wword, wslowo;

int main() {

    wfstream angfile;
    angfile.open ("angfile.txt", ios::out | ios::app);
    wfstream polfile;
    polfile.open ("polfile.txt", ios::out | ios::app);

    cout<<"Please enter english word: ";
    getline(wcin, wword);
    cout<<"Please enter polish word: ";
    getline(wcin, wslowo);



    angfile << wword << endl;
    polfile << wslowo << endl;

    angfile.close();
    polfile.close();

    getchar();
    return 0;
}

Mam nadzieję, że działa. Nie mam gdzie wypróbować.

0

Niestety Dev wywala mi coś takiego:

wfstream undeclared (first use this function)
wcin undeclared (first use this function)

0

Wywal deva - to stare g**no.
Na nowym GCC działa.

wynik: Sukces     czas: 0s    pamięć: 2880 kB     zwrócona wartość: 0

http://979.utnij.net

0

BTW. Doświadczyłeś na własnej skórze, że C++ się rozwija.

Polecam Code::Block
http://97a.utnij.net

0

Pobrałem C::B i jest ten sam problem oO.

||=== Test, Debug ===|
D:\Zasoby\Programowanie\CB\Test\main.cpp||In function int main()':| D:\Zasoby\Programowanie\CB\Test\main.cpp|10|error: wfstream' was not declared in this scope|
D:\Zasoby\Programowanie\CB\Test\main.cpp|10|error: expected ;' before "angfile"| D:\Zasoby\Programowanie\CB\Test\main.cpp|11|error: angfile' was not declared in this scope|
D:\Zasoby\Programowanie\CB\Test\main.cpp|12|error: expected ;' before "polfile"| D:\Zasoby\Programowanie\CB\Test\main.cpp|13|error: polfile' was not declared in this scope|
D:\Zasoby\Programowanie\CB\Test\main.cpp|16|error: `wcin' was not declared in this scope|
||=== Build finished: 6 errors, 0 warnings ===|

0

Rozwiązałem problem z kompilacją. C::B podpiął się pod stary mingw.
Problem w tym, że dalej w pliku są krzaczki zamiast polskich znaków ;/

0

A jak tam z kodowaniem znaków pod konsolą i w pliku?

0

Plik jest kodowany w ANSI, a konsola chyba cp852.
W konsoli nie ma krzaków. W pliku są ;/

0

musisz wykorzystać winapi do tego.

0

juz wklejalem tego linka gdzies niedawno:
http://msdn.microsoft.com/en-us/library/ms686036%28v=vs.85%29.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1