Ég er á Windows 7 x64.
Kóði: Velja allt
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a = "Halló sæti köttuðþ", b;
getline(cin, b);
cout << a << endl;
cout << b << endl;
cout << (a == b) << endl;
return 0;
}
Ég er búinn að compilea þetta forrit með MinGW gcc/g++ (v. 4.6.1) og með Microsoft VC++ bæði sjálfur með "Microsoft Visual Studio 10.0\VC\bin\cl.exe" og í gegnum Visual Studio sjálft, og svo í öllum tilvikum er ég búinn að prufa mismunandi encoding og character set á .cpp skránni.
Ég keyri forritið og skrifa inn "Halló sæti köttuðþ".
Outputtið sem maður býst við að sjá er:
Kóði: Velja allt
Halló sæti köttuðþ
Halló sæti köttuðþ
1
En í staðinn er seinni strengurinn í rugli, og a == b returnar false:
Kóði: Velja allt
Halló sæti köttuðþ
Hall├│ s├ªti k├Âttu├░├¥ <--- Þetta kemur mismunandi eftir encoding/character set á .cpp skránni.
0
Svo prufaði ég líka eitt í viðbót. Keyrði eftirfarandi áður en ég skrifaði eitthvað út:
Kóði: Velja allt
locale::global(locale(""));
Útkoman var óbreytt allstaðar nema þegar ég gerði þetta í Visual Studio, en þá kom a réttur út, en b var ruglaður (eins og a var).
Ég er búinn að vera með þennan hausverk í nokkrar vikur (hef aldrei pælt neitt mikið í þessu, en núna þyrfti ég að fá þetta í lag), og hef ekki fundið neina lausn sem virkar fyrir mig á netinu.
Eruð þið með hugmyndir um hvað sé að?
Og líka ef einhver á ekki í þessu vandamáli að stríða og er á Windows 7, endilega segja mér frá hvaða compiler/encoding á skrá (ef eitthver sérstök er notuð) þið eruð að nota.
Fyrirfram þakkir,
Bjarki Ágúst.