Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zmienne typu string jako parametry OemToChar

Ostatnio zmodyfikowano 2013-05-22 13:28
Autor Wiadomość
Berux
Temat założony przez niniejszego użytkownika
Zmienne typu string jako parametry OemToChar
» 2013-05-21 14:00:26
Witam. Piszę sobie pewien program (nie powiem jaki :P) i muszę zapisać to, co napisał użytkownik do pliku tekstowego. Wszystko jest ok, dopóki użytkownik nie wpisze polskich znaków. Szukałem trochę w google i dowiedziałem się, że powinno się użyć funkcji OemToChar. I teraz moje pytanie: ta funkcja przyjmuje jako argumenty zmienne typu char, a ja potrzebuję go użyć na tablicy string. Oto kawałek kodu:
C/C++
std::string dane[ 5 ];
//...

getline( cin, dane[ 0 ] );
OemToChar( dane, dane );

plik << dane[ 0 ];

Oraz błąd jaki otrzymuję:
cannot convert 'std::string*' to 'const CHAR*' for argument '1' to 'BOOL OemToCharA(const CHAR*, CHAR*)'|

Z góry dzięki za pomoc.
P-83493
cyklopek11
» 2013-05-21 14:23:56
Zainteresuj się metodą klasy std::string c_str().

PS. I tak wszyscy się domyślają do czego ma służyć ten program :-)
P-83497
Berux
Temat założony przez niniejszego użytkownika
» 2013-05-21 14:36:42
Próbowałem. Oto kod:
C/C++
getline( cin, dane[ 0 ] );
OemToChar( dane.c_str(), dane.c_str() );

plik << dane[ 0 ];

I błąd:

error: request for member 'c_str' in 'dane', which is of non-class type 'std::string [5]'|
error: request for member 'c_str' in 'dane', which is of non-class type 'std::string [5]'|

PS To według Ciebie do czego może służyć?

/edit:

Jak wywołać przejście do nowej linii w pliku tekstowym, tak żeby następne wprowadzone dane były już w nowej linii.
P-83499
pekfos
» 2013-05-21 14:52:06
Nie możesz tego użyć na tablicy.
P-83501
Berux
Temat założony przez niniejszego użytkownika
» 2013-05-21 14:56:09
Jak zmienię, żeby nie była to tablica tylko zwykły string to i tak są błędy:

error: invalid conversion from 'const char*' to 'CHAR*'|
error:   initializing argument 2 of 'BOOL OemToCharA(const CHAR*, CHAR*)'|
P-83502
pekfos
» 2013-05-21 15:15:28
Użyj innego bufora lub rzutuj na typ bez const.
P-83505
Berux
Temat założony przez niniejszego użytkownika
» 2013-05-22 11:34:05
Użyj innego bufora
Jakiego na przykład?
P-83580
cyklopek11
» 2013-05-22 13:15:22

Użyj innego bufora
Jakiego na przykład?

Jako drugi argument funkcji np:
C/C++
...

char * bufor = new char[ duzomiejsca ];
//dalej wyzerowanie bufora
OemToChar( dane[ 0 ].c_str(), bufor );
P-83591
« 1 » 2
  Strona 1 z 2 Następna strona