Umlaute
-
kleines Test prog mit Feldern ich hab nen Satz mit "ä,ö,ü,ß"
diese sollen durch "ae,ue..." ersetzt werden.
Code:
#include "string.h" #include "iostream.h" void main() { char Text[110]="Es wäre schon schön wenn wir Weltmeister werden dann müßten wir uns nicht schämen ."; char temp1,temp2; int i,j; for(i=0;Text[i]!=0;i++) { if (Text[i]=='ä') { Text[i]='a'; j=i+1; temp1=Text[i+1]; do { if(j==i+1) { Text[j]=temp1; Text[j]='e'; } if(j>i+1) { temp2=temp1; temp1=Text[j]; Text[j]=temp2; } j++; } while(Text[j]!=0); } if (Text[i]=='ö') { Text[i]='o'; j=i+1; do { if(j==i+1) { temp1=Text[j]; Text[j]='e'; } if(j>i+1) { temp2=temp1; temp1=Text[j]; Text[j]=temp2; } j++; } while(Text[j]!=0); } if (Text[i]=='ü') { Text[i]='u'; j=i+1; do { if(j==i+1) { temp1=Text[j]; Text[j]='e'; } if(j>i+1) { temp2=temp1; temp1=Text[j]; Text[j]=temp2; } j++; } while(Text[j]!=0); } if (Text[i]=='ß') { Text[i]='s'; j=i+1; do { if(j==i+1) { temp1=Text[j]; Text[j]='s'; } if(j>i+1) { temp2=temp1; temp1=Text[j]; Text[j]=temp2; } j++; } while(Text[j]!=0); } } cout<<Text<<endl; }
die Umlaute werden ersetzt aber irgendwie stimmt da was nich. Der macht keine neue Stelle für das "e" ..also erst schaut er ob nen "ä" is wenn eins is wird das durch nen "a" ersetzt anschließend soll ne neue Stelle gemacht werden wo dann das "e" eingefügt wird aber des geht nit so wirklich
-
schau dir mal string::replace() an, das kann das selber erledigen, was du hier per Hand versuchst.
-
Per Hand geht es einfacher, wenn du Zeichen für Zeichen in ein neues Array kopierst:
char src[]=""Hällo Wält"; char dst[100]; char* d = dst; for(char * s = src; *s; ++s, ++d) switch(*s) { case 'ä': *d++ = 'a'; *d = 'e'; break; case 'ö': *d++ = 'o'; *d = 'e'; break; default: *d = *s; } *d = 0;
-
Es sollte nur erwähnt werden, dass nicht ASCII-Zeichen im Source-Code abhängig von den Ländereinstellungen des Betriebssystems übersetzt werden. Also auf einem Japanischen System sind es keine ä, ö, ü mehr...
Entweder den Source-Code als Unicode abspeichern, oder diese Umlaute als Zahlen ausdrücken...