umwandeln in charcode -> Meine Funktion macht nicht mit!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • umwandeln in charcode -> Meine Funktion macht nicht mit!

    Tach Leudde. Und wieder habe ich ein Problem...
    Also, ich habe hier eine Funktion, die aus

    he, "hallo" hans


    ein

    he,%20%22hallo%22%20hans


    machen soll...

    Hier der Source:

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. string cc_escape (string in) {
    5. string rep;
    6. string wit;
    7. int pos;
    8. int run = 1;
    9. while (true) {
    10. if (run == 1) {rep = "\""; wit = "%22";}
    11. else if (run == 2) {rep = "%"; wit = "%25";}
    12. else if (run == 3) {rep = "&"; wit = "%26";}
    13. else if (run == 4) {rep = "?"; wit = "%3F";}
    14. else if (run == 5) {rep = "="; wit = "%3D";}
    15. else if (run == 6) {rep = " "; wit = "%20";}
    16. else if (run == 7) {rep = "<"; wit = "%3C";}
    17. else if (run == 8) {rep = ">"; wit = "%3E";}
    18. else {break;}
    19. while (true) {
    20. pos = in.find(rep);
    21. if (pos == -1) {
    22. break;
    23. } else {
    24. in.erase(pos, rep.length());
    25. in.insert(pos, wit);
    26. }
    27. }
    28. run++;
    29. }
    30. return in;
    31. }
    32. int main (int argc, char *argv[]) {
    33. string test = "he, \"hallo\" hans";
    34. cout << cc_escape(test) << endl;
    35. system ("PAUSE");
    36. return 0;
    37. }
    Alles anzeigen


    Leider sehe ich bei dem, was dabei rauskommt, nur ein schwarzes
    DOS-Fenster mit einem blinkenden _
    Das war's...

    Wenn ich statt einem \" oder ' ein anderes Zeichen eingebe,
    funktioniert alles fehlerfrei.
    Was mache ich falsch?
  • So gehts, und ist sicherlich auch ein bisschen schneller :)

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. string cc_escape (string in) {
    5. struct map_t {
    6. char cOld;
    7. char* sNew;
    8. };
    9. const map_t MAP[8] = {
    10. {'"', "%22" },
    11. {'%', "%25" },
    12. {'&', "%26" },
    13. {'?', "%3F" },
    14. {'=', "%3D" },
    15. {' ', "%20" },
    16. {'<', "%3C" },
    17. {'>', "%3E" }
    18. };
    19. string ret;
    20. size_t nLen = in.length ();
    21. for (size_t i = 0; i < nLen; ++i) {
    22. char c = in[i];
    23. bool bFound = false;
    24. for (int j = 0; j < 8; ++j)
    25. if (c == MAP[j].cOld) {
    26. ret += MAP[j].sNew;
    27. bFound = true;
    28. break;
    29. }
    30. if (!bFound)
    31. ret += c;
    32. }
    33. return ret;
    34. }
    35. int main (int argc, char *argv[]) {
    36. string test = "he, \"hallo\" hans";
    37. cout << cc_escape(test) << endl;
    38. system ("PAUSE");
    39. return 0;
    40. }
    Alles anzeigen