C++ Ansi String

Tutorials.at
Verfügbare Informationen zu "C++ Ansi String"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Hoerb - exbs - DrPhil_Guth
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 12
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: C++ Ansi String
  • Letzte Antwort: vor 17 Jahren, 4 Monaten, 16 Tagen, 5 Stunden, 28 Minuten
  • Alle Beiträge und Antworten zu "C++ Ansi String"

    Re: C++ Ansi String

    Hoerb - 13.12.2006, 20:53

    C++ Ansi String
    HI

    habe folgendes Problem:

    Ich möchte das die Speicheradresse eines Satzes ausgegeben wird nur das Problem ist das er immer nach dem letzten buchstaben des ersten wortes eine binäre null setzt und somit nur die speicheradresse des ersten wortes ausspuckt !

    wie kann man dieses umgehen ?

    Hier mal das Programm:

    char* liesText(void);
    int main(int argc, char **argv)
    {
    char *text;
    text=liesText();
    cout << "Der Text lautet = " << text << endl;
    cout << "Adresse von text = " << reinterpret_cast<int*>(text);

    cout << "\n\npress any key for continue ...";
    getch();
    return 0;
    }
    //---------------------------------------------------------------------------

    char* liesText(void)
    {
    char temp[81];
    cout << "Bitte Text eingeben: " << endl;

    cin >> temp; // Eingabe auf ANSI String speichern
    char *zeigerAufText=new char[strlen(temp)+1];
    strcpy(zeigerAufText,temp);
    return zeigerAufText;
    }



    Re: C++ Ansi String

    exbs - 13.12.2006, 22:54


    mmmh nja ich bin in c++ leider kaum bewandert :roll: ... aba ich habe mir da sowas mal geschrieben ...

    ich poste es mal evtl hilft es dir...
    Code: #include <iostream>

    using namespace std;

    char opferwert[] = "hallo wie geht es";

    int main()
    {
        cout << opferwert << "\t" << hex << &opferwert << endl;
        return 0;
    } also das gibt halt nur die add von opferwert aus ... vlt hilft es dir ja ... wenn nicht ... dann gug doch mal hier, da stehn tutorials zum speicher lesen, verändern usw.



    Re: C++ Ansi String

    Hoerb - 13.12.2006, 23:21


    Hilfreich schon nur ich will ja selber irgendeinen text eingeben :(



    Re: C++ Ansi String

    exbs - 13.12.2006, 23:35


    Zitat: Hilfreich schon nur ich will ja selber irgendeinen text eingeben
    sowas hier vlt?!:
    Code: #include <iostream>
    #include <stdio.h>

    using namespace std;

    char opfertext[1024];

    int main()
    {
        fgets(opfertext, 1024, stdin);
        if (opfertext[strlen(opfertext) - 1] == '\n') //löscht return am ende des strings
            opfertext[strlen(opfertext) - 1] = '\0';
           
        cout << opfertext << "\t" << hex << &opfertext << endl;
        getchar();
        return 0;
    } vlt nicht ganz c++, wegen "fgets" :roll: ..aba geht



    Re: C++ Ansi String

    Hoerb - 14.12.2006, 18:12


    Wenn du mir das jetzt noch genau erklären könntest wäre ich sehr verbunden^^

    fgets(opfertext, 1024, stdin);
    if (opfertext[strlen(opfertext) - 1] == '\n') //löscht return am ende des strings
    opfertext[strlen(opfertext) - 1] = '\0';

    cout << opfertext << "\t" << hex << &opfertext << endl;
    getchar();
    return 0;


    zb.: fgets(opfertext, 1024, stdin); was macht das stdin ?
    und warum
    opfertext[strlen(opfertext) - 1] = '\0'; dividiert durch 0 ?

    und

    cout << opfertext << "\t" << hex << &opfertext << endl;

    da das "\t" und das hex !!

    ^^

    thx schon mal im vorraus und wegen den zeug oberhalb^^



    Re: C++ Ansi String

    exbs - 14.12.2006, 18:36


    Zitat: Wenn du mir das jetzt noch genau erklären könntest wäre ich sehr verbunden^^
    Kein Ding :wink: !!

    Code: fgets(opfertext, 1024, stdin); Zitat: was macht das stdin ? Also ... "stdin" --> steht für "standard in" ... dort liegt die eingabe, welche du tätikst ... "normalerweise" ... würde dort die Datei liegen, von der du liest ... jetzt ist es nun die datei "stdin".

    Code: opfertext[strlen(opfertext) - 1] = '\0'; Zitat: dividiert durch 0 ? nein! ... '\0' heisst das sozusagen aan diese stelle des char array NULL gelegt wird, praktisch nichts ... somit wird das retrun gelöscht, welches am ende des array steht.

    Code: cout << opfertext << "\t" << hex << &opfertext << endl; Zitat: da das "\t" und das hex !! "\t" ist eine sogenannte [Escapesequenz. sie verursacht einen tab. was genau das "hex" macht kann ich dir grad garnet sagn :oops: , ich schreib es immer so ... ich habe aber gemerkt, wenn ich es weg lasse geht es auch.

    ok ich hoffe ich konnte helfen.



    Re: C++ Ansi String

    Hoerb - 14.12.2006, 20:48


    dankö^^



    Re: C++ Ansi String

    DrPhil_Guth - 16.12.2006, 17:07


    komplizierte lösungen...

    du müsstest einfach statt cin>>...

    cin.getline verwenden. wenn du durch entwas anderes als ein newline zeichen die eingabe beenden willst, dann musst du noch zusätlich als parameter den delimiter angeben (denke in char oder so)



    Re: C++ Ansi String

    exbs - 17.12.2006, 03:12


    kenne mich in c++ net aus. liest "cin.getline" auch nach dem leerzeichne weiter ein??



    Re: C++ Ansi String

    DrPhil_Guth - 17.12.2006, 09:34


    ja, cin.getline liest alle zeichen (auch leerzeichen) bis zum nächsten newline zeichen ein. Wenn einem das newline zeichen nicht passt, dann kann man als weiteren parameter einen anderen char wert übergebenm bis zu dem eingelesen wird. hier mal ein source, wo ich das verwendet habe:

    Code: // save_text.cpp

    // INCLUDES
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include "CSaveString_AK.h"

    // DEFINES //////////////////////////////////////

    // Constant for the maximum number of Characters to read from user
    const int MAX_CHAR = 256;

    // FUNCTIONS //////////////////////////////////

    int main(int argc, char* argv[])
    {

    // VARIABLES

    char szBuffer[256];
    char szFileName[256];

        if (argc < 2)
           {
           printf ("\nRequires the Name of the file as argument\n");
           return 0;
           }
        else if (argc > 2)
           {
           printf ("Too many arguments\n");
           return 0;
           }

    printf("Please type in your text with max. %d characters. End Input by hitting <ESC> and then enter. \n", MAX_CHAR);


    // ### *** --- HIER IST CIN.GETLINE ... *** ###
    std::cin.getline(szBuffer, MAX_CHAR, 27);
    strcat(szBuffer, "\n\0");


    strncpy (szFileName, argv[1], 256);

    CSaveString text(szFileName, szBuffer, MAX_CHAR);

    if (text.save() == CSaveString::FILE_ERR)
        {
        printf("\nFile could not be opened.\n");
        return 0;
        }



        return 0;
    } // main()



    hier hab ich zum beispiel ESC als delimiter genommen, das den ASCII wert 27 hat.
    Code ist nicht ausführbar, weil ein header von mir fehlt. Wer ihn braucht, bitte melden.



    Re: C++ Ansi String

    exbs - 17.12.2006, 13:38


    Das ist ja cool. Denn oftmals sucht man genu sowas. Aber da ich nur in C schreibe, habe ich das vorher noch nicht näher kennen gelernt. Danke dir ... wieda ws gelernt.



    Re: C++ Ansi String

    DrPhil_Guth - 17.12.2006, 15:58


    ja, C++ hat so einige vorteile, aber ich verwende im zweifellsfall auch C.
    eine C- variante davon kenne ich nicht, da müsste man umständlich was selber programmieren.

    übrigens gibts alles zum nachlesen auf
    http://www.cppreference.com



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Problem beim Programm... - gepostet von toby-man am Mittwoch 03.10.2007
    Brauche Hilfe - gepostet von Belphegor am Montag 05.03.2007
    c/c++? - gepostet von pYp am Montag 04.09.2006
    ASCII pfeiltasten - gepostet von Elch am Donnerstag 20.09.2007
    atoi - gepostet von phein am Donnerstag 15.02.2007
    Programmierung einer Schliessung - gepostet von ChillerT am Dienstag 06.02.2007
    Variablen Speichern - gepostet von Wüstling am Donnerstag 10.05.2007
    Hallo Welt Programm fehlgeschlagen - gepostet von fabolus am Freitag 05.05.2006
    C# - gepostet von un94 am Freitag 12.10.2007



    Ähnliche Beiträge wie "C++ Ansi String"

    Tribute: "Back in Baroque - The String Tribute to AC/DC - Marco290991 (Samstag 15.12.2007)
    Gibt es noch Mädels die kein String tragen ? - daniel (Dienstag 12.06.2007)
    STRING füa resi & fuzi - fasching (Dienstag 27.09.2005)
    String-Tanga-Gedicht - Trinity (Montag 23.10.2006)
    String Emil - SEO - Hammerscharf ;) - Mika (Dienstag 16.01.2007)
    11.04.2009 - Alex (Samstag 11.04.2009)
    String Emil - chipendale14 (Sonntag 06.03.2005)
    Mocc ist neu und etwas hilflos - Rumpelnöff (Mittwoch 14.12.2011)
    String-Emil - Don Topherino (Montag 05.12.2005)
    String Avoider - Murmel (Donnerstag 24.05.2007)