toupper- /String- Problem!!
-
Wenn du den Orginalstring nicht verändern willst, erzeuge dir in deiner Funktion einen temporären string dem du das Ergebnis von toupper zuweist und den gibst du dann zurück.
Was soll eigentlich dieser Umweg über den buffer beim Einlesen? Warum liest du nicht direkt in den string ein.string toUpperString(const string& org) { string tstr(org); for (int i=0; i<org.size(); i++) // Was sollte dieses 80 hier? { tstr[i] = toupper(org[i]); } return tstr; }
-
@Braunstein: thx für die Hilfe.
Allerdings kommen bei beim Ausführen 2 Fehler:
Linker-Vorgang läuft... umwandlung.obj : error LNK2001: Nichtaufgeloestes externes Symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl toUpperString(class std::basic_string<char,struct std::char_traits<char>,class std::al locator<char> >)" (?toUpperString@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@Z) Debug/umwandlung.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe. umwandlung.exe - 2 Fehler, 0 Warnung(en)PS: Die Eingabefunktion über den Buffer ist Vorgabe. Warum uch immer. Versteh ich selbst nich wirklich.
---------------------------------------------------
Ich habe jetzt auch noch ne andere Lösung gefunden:string toUpperString(string org) { for(int i = 0; org[i] != 0; i++) { if(org[i] >= 'a' && org[i] <= 'z') { org[i] += 'A' - 'a'; } } return org; }... ist aber vielleicht icht so praktisch, wenn beispielsweise der Zeichensatz auf dem OS nicht dem ASCII entspricht, sondern irgendein anderer, wo das Alphabet nicht hintereinander steht.
-
Ist bei Definition und Deklaration der Funktion auch gleich?
-
Ähm, der Linkerfehler kann eigentlich nur einen einzigen Grund haben:
Du hast die Funktion nur unten bei der Definition geändert, aber nicht oben bei der Deklaration.
-
LordJaxom schrieb:
Du hast die Funktion nur unten bei der Definition geändert, aber nicht oben bei der Definition.
Schöner Satz.

-
Wusste ich's doch

Ich hatte es gerade gesehen als ich Absenden gedrückt hab, da hatte das Forum nen kleinen Hänger. Und ich hab mir noch gedacht "und bis das Forum den Request verarbeitet hat hab ich vergessen es zu ändern"

-
öhm yo... wo ihr Recht habt, habt ihr Recht.
Hab ich total vergessen...thx nochmal, jetzt gehts
-
Nur mal als Hinweis. Es gibt noch mehr Varianten.
siehe z.Bsp. hier
http://www.c-plusplus.net/forum/viewtopic-var-t-is-147592.html
-
mhhh schon. allerdings war bei mir, hat ich glaub ich nich dazu gesagt, die eingabe in string gefordert.
und bei den anderen beispielen (siehe link), bestehen die eingaben aus character-array's.trotzde gut zu wissen...

-
ob string oder char-Array ist doch hier egal. Das funktioniert mit beiden.