#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
char a[n+1]; // intializing array
cin.getline(a,n); // inputting array
cin.ignore();
int maxlen=0,curr=0,i=0;
while(1)
{
if (a[i] ==' ' || a[i] == '\0'){
maxlen=max(curr,maxlen);
curr=0;
}
curr++;
if (a[i]=='\0'){
break;
}
i++;
}
cout<<maxlen;
}
Hier versuche ich, die maximale Wortlänge in diesem Satz zu finden, aber ich kann den Satz nicht speichern oder das Array eingeben. Um dies zu überprüfen, setze ich cout für das Array ein und es druckt das von mir eingegebene Array nicht. Ich möchte den Grund wissen
Lösung des Problems
Fehler C2131: Ausdruck wurde nicht zu einer Konstante ausgewertet (6):
Dies wird durch die Verwendung von Nicht-Standard-C++ hier verursacht:
cin>>n;
char a[n+1]; // intializing array
Arrays in C++ müssen mit einem konstanten Ausdruck deklariert werden, nicht mit einem laufzeitbasierten Ausdruck. Da n
es nur zur Laufzeit bekannt ist, ist dies kein legales C++.
Um das Problem zu lösen, benötigen Sie keine rohen Char-Arrays. Das geht ganz einfach mit std::string
. Darüber hinaus std::stringstream
wird der Code durch die Verwendung noch einfacher, da nicht auf Leerzeichen geprüft werden muss:
#include <algorithm>
#include <string>
#include <iostream>
#include <sstream>
int main()
{
std::string sentence;
// Read the sentence
std::getline(std::cin, sentence);
// Parse each word
std::stringstream strm(sentence);
std::string word;
size_t maxLen = 0;
while (strm >> word)
maxLen = std::max(maxLen, word.size());
// Output results
std::cout << sentence << "\n" << maxLen;
}
Für diese Eingabe:
This is a test of getting the longest word in a string
die ausgabe ist:
This is a test of getting the longest word in a string
7
Schließlich sollten Sie einem guten C++-Buch folgen, anstatt zu Websites zu gehen, die Codierungen zeigen, die Folgendes verwenden:
#include<bits/stdc++.h>
oder die oben erwähnte ungültige Array-Syntax.
Kein seriöses C++-Buch oder eine seriöse C++-Website, die einem Peer-Review unterzogen wurde, zeigt Code, der diesen Header oder die ungültige Array-Syntax verwendet.
Wenn Sie zu einer Website gehen, die Code wie diesen zeigt, und der Zweck der Website ist, C++ zu lehren, sollten Sie C++ nicht von dieser Website lernen.
Keine Kommentare:
Kommentar veröffentlichen