Verfügbare Informationen zu "C++ Ansi String"
Qualität des Beitrags: 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:53C++ 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)