Ich habe ein paar Threads gesehen, die sich mit ähnlichen Fehlern befassen, aber sie haben sich alle mit verschiedenen Variationen des Problems von dem einen I befasst (Code für: "Ich bin zu grün, um ihnen einen Sinn zu geben").Ein Wert vom Typ "char *" kann nicht verwendet werden, um eine Entität vom Typ "char" zu initialisieren
#include <iostream>
#include <array>
#include <sstream>
using namespace std;
struct StudentRecord
{
char name[20];
int id;
float gpa;
};
int main()
{
cout << "Enter your name:" << endl;
char nameInput[20];
cin >> nameInput;
cout << "Enter your student ID:" << endl;
int idInput;
cin >> idInput;
cout << "Enter your GPA:" << endl;
float gpaInput;
cin >> gpaInput;
StudentRecord TESCStudent =
{ { nameInput }, idInput, gpaInput }; // TROUBLE STARTS HERE
cout << "Name: " << TESCStudent.name << "\nID: " << TESCStudent.id << "\nGPA: "
<< TESCStudent.gpa << endl;
}
Die StudentRecord TESCStudent = {...} initializer gibt die folgenden Fehler: Fehler C2440: 'initialisieren': Wert des Typs: aus 'char [20]' to 'char' IntelliSense nicht konvertieren "char *" kann nicht verwendet werden, um eine Entität vom Typ "char" zu initialisieren
Ich weiß, dass eine Zeichenfolge eine Menge Probleme lösen würde, aber das Projekt forderte, dass wir den Namen als 20-Zeichen-Array erhalten.
Dies ist das erste Mal, dass ich ein Struct nutze, damit ich etwas Grässliches tun kann, ohne es zu wollen, bitte geh einfach zu mir!
Ich bin nicht 100% klar, wie Ihr Code die Eingabe auf 20 Zeichen begrenzt. Können Sie das näher ausführen? Außerdem war ich gezwungen, das Array zu benutzen (was saugte), aber ich bin daran interessiert, wie Sie direkt in das Array lesen, das werde ich in Zukunft versuchen! –
@KeeperofSecrets 'setw' legt die maximale Größe für den nächsten Lesevorgang fest (inkl. Nullterminierung, wenn es sich um ein char-Array handelt) –
Cool. Dies ist eine großartige Lösung, viel sauberer und eleganter als die For-Schleife, die ich verwendet habe. –