3
svar
65
visningar
Utskrift på svenska med clocale
Tjena, försöker få min kod att skriva ut "Å, Ä, Ö" med <clocale> och bara vissa delar av koden visar "å ä ö" och om jag tar bort <clocale> så blir det tvärtom. T.ex Städer och Söka blir rätt med <clocale> men inte Övik och Umeå. Om jag tar bort <clocale> så blir det tvärtom, städer & söka blir fel men Övik & Umeå blir rätt... Jag missar förmodligen något extremt uppenbart men jag ser det inte..
Kod :
#include <iostream>
#include <string>
#include <clocale>
using namespace std;
class stad {
public:
string namn;
int temp;
string ToString() {
return "Stad: " + namn + ", Temperatur: " + to_string(temp);
}
};
int linsok(stad stader[], int n, int soktemp) {
for (int i = 0; i < n; i++) {
if (stader[i].temp == soktemp) {
return i;
}
}
return -1;
}
void bubblesort(stad stader[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (stader[j].temp > stader[j + 1].temp) {
swap(stader[j], stader[j + 1]);
}
}
}
}
int main() {
setlocale(LC_ALL, "Swedish_Sweden");
stad stader[4];
for (int i = 0; i < 4; i++) {
cout << "Ange stadens namn: ";
cin >> stader[i].namn;
cout << "Ange stadens temperatur: ";
cin >> stader[i].temp;
cout << "---------------------------" << endl;
if (stader[i].temp <= -60 || stader[i].temp >= 60) {
cout << "Ogiltig temperatur. Ange temperatur mellan -60 och 60." << endl;
i--;
}
}
bubblesort(stader, 4);
cout << "Städer sorterade efter temperatur: " << endl;
cout << "---------------------------" << endl;
for (int i = 0; i < 4; i++) {
cout << stader[i].ToString() << endl;
}
int soktemp;
cout << "---------------------------" << endl;
cout << "Ange en temperatur att söka efter: " << endl;
cin >> soktemp;
int index = linsok(stader, 4, soktemp);
if (index != -1) {
cout << "Staden med temperatur " << soktemp << " Hittades på index " << index << endl;
}
else {
cout << "Ingen stad med temperatur " << soktemp << " hittades. " << endl;
}
return 0;
}
Kanske detta hjälper: https://stackoverflow.com/questions/51479116/changing-locale-to-swedish
Prova detta istället
setlocale(LC_ALL, "sv-SE"); // sv_SE verkar fungera också