2016-06-09 13 views
0

Ich brauche Hilfe mit C++ <string.h> Char Tabellen .... Wie schneidet man Wort aus Satz, mit "*" Operator, ohne strstr? Zum Beispiel: "StackOverFlow ist Online-Website". Ich muss "StackOverFlow" abschneiden und in der Tabelle "ist Online-Website" mit Operator, ohne strstr. Ich konnte es nirgends finden.C++ String.h Char Tabellen Cut-off-Wort ohne strstr

Meist wie:

char t[] 

int main 
{ 
    strcpy(t,"Stackoverflow is online website"); 

    ??? 
    (Setting first char to NULL, then strcat/strcpy rest of sentence into table) 

} 

Sorry für Englisch Probleme/Bad Namensgebung ... Ich fange an C++

+0

Bin ich verstehe Sie richtig? Sie müssen einen Teil des C-Strings abschneiden und in derselben Variablen speichern? Gibt es einen Grund gegen strstr in diesem Fall? Sie können es immer selbst implementieren, aber es ist wie eine Fahrrad-Neuerfindung –

Antwort

1

zu lernen, Sie können so etwas tun. Erkläre besser, was du brauchst, bitte.

char szFirstStr[] = "StackOverflow, flowers and vine."; 
strcpy(szFirstStr, szFirstStr + 15); 
std::cout << szFirstStr << std::endl; 

Wird "Blumen und Wein" ausgeben.

Verwendung von C-Strings ist nicht gut Stil für C++ - Programmierer, verwenden std::string Klasse.

0

Ihr Code ist offensichtlich syntaktisch falsch, aber ich nehme an, Sie sind sich dessen bewusst.

Ihre Variable t ist wirklich ein char-Array und Sie haben einen Zeiger, der auf das erste Zeichen dieses char-Arrays zeigt, so wie Sie einen Zeiger haben, der auf das erste Zeichen der nullterminierten Zeichenfolge zeigt. Sie können den Zeigerwert so ändern, dass er auf den neuen Anfangspunkt Ihrer Zeichenfolge zeigt.

Sie können das entweder tun, oder wenn Sie tatsächlich ein Array verwenden, können Sie vom Zeiger des neuen Startpunkts kopieren, den Sie verwenden möchten. Also, wenn die Daten, die Sie im Speicher befindet kopieren möchten, auf die durch:

const char* str = "Stackoverflow is an online website"; 

Das ist wie im Speicher folgt aussieht:

     Stackoverflow is an online website\0 
str points to:  --^ 

Wenn Sie auf einen anderen Startpunkt zeigen möchten, können Sie ändern der Zeiger auf Punkt an einer anderen Ausgangsposition:

    Stackoverflow is an online website\0 
str + 14 points to: --------------^ 

Sie die Adresse des „i“, um Ihre strcpy, wie so passieren können:

Offensichtlich ist es nicht sicher, dass Sie die Größe kennen, um ohne eine Analyse (die 14) abzuschneiden, was Sie tun könnten, ist die Suche nach dem ersten Zeichen nach einem Leerraum.

// Notice that this is just a sample of a search that could be made 
// much more elegant, but I will leave that to you. 
const char* FindSecondWord(const char* strToSearch) { 
    // Loop until the end of the string is reached or the first 
    // white space character 
    while (*strToSearch && !isspace(*strToSearch)) strToSearch++; 
    // Loop until the end of the string is reached or the first 
    // non white space character is found (our new starting point) 
    while (*strToSearch && isspace(*strToSearch)) strToSearch++; 
    return strToSearch; 
} 

strcpy(t, FindSecondWord("Stackoverflow is an online website")); 

cout << t << endl; 

Dies wird ausgegeben: ist ein Online-Website

Da dies höchstwahrscheinlich eine Schulaufgabe, werde ich den Vortrag über modernere C++ String-Handling überspringen, wie ich erwarte, dass dies etwas zu tun hat mit Lernzeigern. Aber offensichtlich ist dies eine sehr niedrige Modifikation einer Saite.

0

Als Anfänger warum es schwerer machen als es wirklich sein muss?

Verwendung std :: string

und

substr() Link