Vergleichen von Strings
-
Servus,
ich möchte die zwei characterStrings
album[7][1]und
searchmiteinander vergleichen, eine Zeichenkette ist also in einem dreidimensionalem, die andere in einem eindimensionalen CharArray gespeichert. So wie ich das gemacht habe, funktioniert es nicht. Kann mir jemand erklären warum? Bzw. sagen wie es funktioniert? (ohne Bibliotheksfunktionen)
Danke im voraus!
Das Programm gibt bei zwei gleichen Eingaben, das falsche aus

#include <iostream> using namespace std; char album[255][3][255]; void init(){ for(int i=0; i<255; i++){ for(int j=0; j<3; j++){ for(int k=0; k<255;k++) album[i][j][k]='\0'; } } } int main(){ init(); cin>>album[7][1]; //Eingabe: abc char search[255]; for(int i=0; i<255; i++) search[i]='\0'; cin>>search; //Eingabe: abc if(album[7][1]==search) cout<<"funzt"<<endl; else cout<<"funzt nicht"; //AUSGABE return 0; }
-
Du versuchst
operator ==mit zweicharArrays zu verwenden.
Nu gibt es in C++ aber keinenoperator ==für Arrays.
Dafür gibt es impliziten "array to pointer decay" und dannoperator ==für Zeiger.
Heisst: du vergleichst die Adressen der beiden ersten Elemente der Arrays.
Und die sind natürlich nicht gleich, sind ja unterschiedliche Arrays, auch wenn zufällig das selbe drinsteht.Zum Thema "wie macht man es dann (ohne Bibliotheksfunktionen)" nur ein kleiner Tip: du wirst ne Schleife brauchen.
-
Ok vielen Dank! Dacht mir schon, dass ich mir die Schleife nicht ersparen kann.

-
char album[255][3][255]; void init(){ for(int i=0; i<255; i++){ for(int j=0; j<3; j++){ for(int k=0; k<255;k++) album[i][j][k]='\0'; } } }Was spricht hier gegen
class Album { string title; string artist; string was_immer_der_dritte_string_bei_dir_sein_soll; }; vector<Album> albums;?
Das würde sofort alle deine Probleme lösen und würde zu einfacherem Code führen, der zudem noch weniger Beschränkungen hat.
edit: Ach, du willst es ohne Bibliotheksfunktionen. Mittelfristig wär's dann aber wohl das Beste, vector und string nach zu programmieren.
-
Abgesehen davon, ob das ausser cin und cout C++ ist.
(char) arrays mit mehr als 2 Dimensionen sind grundsätzlich erst mal keine sooo gute Idee. Ausser du hast es richtig drauf.
Kommt dann sowas wie
***albumraus.
Eher unübersichtlich würde ich sagen.