2017-12-26 27 views
0

ist dies die erste Struktur und enthält erstes Mitgliedzuweisen 2 string :: Array in 2 verschiedenen eine Struktur

#include <iostream> 
#include <algorithm> 
#include <cstring> 
struct Student_Data { 
    string Assignment[200]; 
}; 

dies ist die zweite Struktur und enthält ein Mitglied

struct Courseassign { 
    string createassig[200]; 
}; 

//here is declare function 
Doc(Student_Data ,Courseassign); 
//the main function to declare 2 structures and call the Doc() function 
int main() 
{ 
    Courseassign phase1 ; // declare 1st struct 
    Student_Data Student_Details ; // declare 1st struct 
    Doc( phase1 , Student_Details); // Call Doc() function to run it 
} 

hier unsere Funktion Um die Mission zu machen, habe ich versucht, copy() zu benutzen, aber es funktionierte nicht und ich weiß, dass cpy char nicht string sein sollte, also möchte ich einfach member gleich einem anderen member in einer anderen struct machen, während String Array

void Doc(Courseassign phase1, Student_Data Student_Details) 
{ 
    for(int i=0;i<200;i++) { 
     cout<< "create assign " << endl ; 
     cin >> phase1.createassig[i] ; // here to enter member value 
     // here it's just a try to make them equal each other but it failed 
     Student_Details.Assignment[i] = phase1.createassig[i]; 
     // here it should be Array of char but i need to Array of strings so what should i use 
     cpy(Student_Details.Assignment[i],phase1.createassig[i]); 
    } 
} 
+1

Sie sollten wirklich Ihre Code-Blöcke aufräumen. Es ist nicht sehr lesbar, und Sie haben Kommentare, die dort nicht kommentiert sind. Bitte lesen Sie [die MCVE-Sektion] (https://stackoverflow.com/help/mcve), da es schwierig ist, zu helfen, wenn ich Ihren Code nicht kompilieren und ausführen kann. Ich bin mir auch nicht sicher, was schief läuft, weil du uns nicht gesagt hast, was nicht funktioniert. Kompilieren, aber nicht richtig? Erhalten Sie einen Kompilierungsfehler? Ein offensichtliches Problem, das ich sehen kann, ist, dass Sie 'phase1' und' Student_Details' nach Wert, nicht nach Verweis übergeben, so dass sie kopiert werden; Sie können die Originale nicht von innen ändern. – Taywee

+0

@Taywee der Code ist okey und es läuft, aber die Funktion, um Mitglieder gleich zueinander zu machen, funktioniert es nicht, nach dem Einfügen von phase1.createassig [i] möchte ich nur Student_Details.Assignment [i] gleich der Wert, der in Zusammenfassung eingefügt: die Frage ist, wie (wie Push-Werte in der anderen) String-Array-Werte zu einer anderen Zeichenfolge zuweisen Array –

+0

Verwenden Sie keine Arrays, verwenden Sie std :: vector. –

Antwort

0

Welche Fehler Sie erhalten, wenn Sie versuchen: Student_Details.Assignment[i] = phase1.createassig[i];

strcpy wie Sie ist für char* s erwähnt, wenn Sie möchten, dass ein String-Wert in einen anderen String-Variable zuweisen, können Sie auch string::assign

Zum Beispiel in Ihrem Fall wäre es:

Student_Details.Assignment[i].assign(phase1.createassig[i]); 

Schließlich wird, wie in den Kommentaren von @ Peter erwähnt, können Sie Ihre structs von Wert sind vorbei, so dass alle Änderungen, die Sie in ihnen machen will nicht zu den tatsächlichen weitergegeben werden, die an die Funktion übergeben werden. Die Änderungen werden lokal an ihnen vorgenommen und beim Beenden der Funktion gelöscht. Sie können versuchen, die Strukturen per Referenz zu übergeben, d. H.

void Doc(Courseassign&, Student_Data&); 
+0

Vielen Dank, ich kann string :: assign ohne Argumente durch Referenz übergeben –

Verwandte Themen