Array-Grösse auslesen
-
hallo zusammen,
ich bin, als absoluter c++ newbie, gerade dabei mir die möglichkeiten der arrays etwas einzuverleiben. nun ist mein titel vielleicht einwenig verwirrend, den sizeof hab ich schon kennengelernt. was mir allerdings noch nicht so recht gelingen will, ist die grösse des inhaltes des array.
oder anders gesagt:
array[10];
array=wert;wie kann ich jetzt herausfinden, wieviel platz das wort innerhalb des array belegt? sizeof würde mir hier ja die antwort 10 geben.
oder gibt es eine möglichkeit, die arraygrösse während der eingabe zu definieren?
gruss
philipp
-
array[10];
array=wert;Das ist aber kein C++. Ein Array kann nicht auf der linken Seite einer Zuweisung stehen.
wie kann ich jetzt herausfinden, wieviel platz das wort innerhalb des array belegt?
Welches Wort?
Verstehe absolut nicht was du eigentlich genau wissen willst.
-
vielleicht kann ich mich so verständlicher ausdrücken:
************************************
#include <iostream>
using namespace std;//Uebung for-Schleife
int main()
{
//Variablen definieren
char $wort[10];
int i=0, g;cout <<"\nBitte ein Wort mit max. 10 Zeichen eingeben: ";
cin >> $wort;//Pruefsumme für die for-Schleife ermitteln
g=sizeof($wort);for (i; i<g; i++)
{
//Wort ausgeben
cout <<"\n" << $wort[i] << "\n";
}
return 0;
}
************************************wenn ich das so löse, funzt es zwar, aber es sieht etwas unschön aus, weil die schleife bis 10 weitermacht, auch wenn das wort schon länsgt ausgegeben ist. deshalb möchte ich für die variable g nicht den sizeof des gesamten arrays, sondern nur die grösse der inhaltes.
ich hoffe das ist nun etwas verständlicher.
philipp
-
Also ich glaub nicht, dass das kompiliert wird
-
Achso, und bitte Codetags verwenden. Kann man einfach besser lesen
.
-
Zu deiner Frage: Um nur die Größe des Inhalts zu ermitteln wird der String mit 0 ('\0') terminiert. Dann kann dir strlen auch sagen wie lang der String ist.
-
Das mit dem $ ist AFAIK eine gcc-Erweiterung.
-
Was bewirkt die denn?
-
dass du $ in Bezeichnern verwenden kannst. Doll oder?
-
Original erstellt von Bashar:
dass du $ in Bezeichnern verwenden kannst. Doll oder?Ja für die PHP-Freaks!
-
bitte verbessert mich, falls ich falsch liege, bin auch noob, aber kann man denn net schreiben:
char $wort[10];
cin >> wort;
cout << wort;?
cya
-
Hallo <dummie>
Verstehe absolut nicht was du eigentlich genau wissen willst.
Nicht? Hast du nie solche "Übungs"programme geschrieben
(..) aber kann man denn net schreiben:
Das würde sicherlich nicht zu dem von <philCH> gewünschtem Effekt führen;
Ich denke mal er wollte so was in der Art haben:
#include <iostream> #include <string> using namepsace std; int main() { string str; cout << "Bitte geben Sie ein Wort ein" << endl; cin >> str; // Ich bin mir nicht sicher ob es wirklich string::length() gibt ;) // aber so in der Art sollte es heissen for (int i = 0; i < str.length(); i++) { cout << str[i] << endl; }; }
mfg
th3law[ Dieser Beitrag wurde am 25.05.2003 um 16:57 Uhr von Th3Law editiert. ]
-
#include <iostream> #include <string> using namepsace std; int main() { string str; cout << "Bitte geben Sie ein Wort ein" << endl; cin >> str; // Ich bin mir nicht sicher ob es wirklich string::length() gibt ;) // aber so in der Art sollte es heissen // Also mach das hier besser so! for (int i = 0; i < str.length(); i++) cout << str[i]; cout.flush(); // Denn sonst bekommst du für jedes Zeichen eine Neue Zeile ! // Ausser du willst das ! }
-
Naja, also es gibt dort einige Möglichkeiten. eine währe das:
#include<iostream> #include<string> using namespace std; main() { int i, size, besetzt; string str[5]={"1. String","2. String"}; size=5; besetzt=0; for(int i=0;i<size;i++) if (!str[i].empty()) besetzt++; // str.empty() kontrolliert, ob String leer ist. cout<<size-besetzt; }
[ Dieser Beitrag wurde am 26.05.2003 um 10:33 Uhr von Spieleprogrammierer editiert. ]