2012-04-02 4 views
3

Ich versuche, in meiner Programmierung zu sichern und etwas zu lernen, das ich irgendwie vermisste (es sei denn, ich verstehe das Problem nicht). Ich versuche, den Benutzer aufzufordern, den Namen eines Projekts einzugeben, und ich möchte diesen Namen in einer Variablen speichern. Normalerweise würde ich getline() oder std::cin >> std::string some_string verwenden, aber die Aufgabe fordert mich auf, dies zu tun, ohne die Verwendung von Strings. "Sie können die String-Klasse NICHT verwenden, sondern stattdessen die Zeichen des Arrays." Darin liegt die Frage: Wie nehme ich die Benutzereingaben und speichere sie in einem Array von Zeichen?Benutzereingabe in einem Array von Zeichen gespeichert (C++)

Der Benutzer wird ein Wort eingeben und dann drücken Sie Enter ... Wie kann ich das in eine Reihe von Zeichen erfassen? Wenn das Wort in einem Zeichen zu einer Zeit kam, konnte ich es einfach zum Array hinzufügen und bei Bedarf dynamisch erweitern, aber wenn es in einem Block von Chars kommt, bin ich für Ideen verloren. Vielen Dank!

Antwort

5

Mit der Elementfunktion cin.getline() können Sie einen Zeichenpuffer und eine Länge angeben.

char name[32]; 
cin.getline(name, 32); 

Obwohl jede C++ Zuordnung, die Sie speziell von Zeichenketten Arrays zu verwenden, anstatt (vor allem in diesem Zusammenhang) fragen würde, ist verdächtig.

+0

'cin.getline (Name, sizeof (name));' – karlphillip

+1

@karl: Gefährlich, denn wenn 'name' auf einen Zeiger geändert wird, kompiliert es nach wie vor, aber tut das Falsche Sache. –

+0

Natürlich, aber dieser Vorschlag geht Hand in Hand mit dem, was in der Antwort angegeben ist. Wenn @Chad Zeiger verwendet hätte, hätte ich meinen vorherigen Kommentar nicht verlassen. :) – karlphillip

0

Try this:

char arr[100]; 
cin >> arr; 
+0

Schreckliche Idee. Keine Möglichkeit zu garantieren, dass der Puffer nicht überläuft. Diese Art von Ding führt zu Fehlern auf der Straße. –

+1

Hinweis: Sie müssen dies ** niemals tun, nachdem Sie diesen Programmierkurs abgeschlossen haben. Sie haben einen Pufferüberlauf erstellt, der die Ursache verschiedener Sicherheitsfehler ist. –

+0

"cin.width (100);" vorher anrufen. –

Verwandte Themen