Ich möchte ein Zeichen Literal mit dem ersten Element von Zeichenfolge vergleichen, um nach Kommentaren in einer Datei zu überprüfen. Warum ein Char benutzen? Ich möchte dies zu einer Funktion machen, die eine Zeichenvariable für den Kommentar akzeptiert. Ich möchte keine Zeichenkette zulassen, weil ich sie auf ein einzelnes Zeichen beschränken möchte.Vergleichen von Zeichen Literal mit Std :: String in C++
In diesem Sinne nahm ich an, der einfache Weg zu gehen wäre, das Zeichen zu adressieren und es an die Vergleichsfunktion von std :: string zu übergeben. Dies führt jedoch zu unbeabsichtigten Ergebnissen.
Mein Code ist wie folgt:
#include <string>
#include <iostream>
int main (int argc, char *argv[])
{
std::string my_string = "bob";
char my_char1 = 'a';
char my_char2 = 'b';
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char1 << std::endl;
if (my_string.substr(0,1).compare(&my_char1)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char2 << std::endl;
if (my_string.substr(0,1).compare(&my_char2)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string << std::endl
<< "STRING 2 : " << "bob" << std::endl;
if (my_string.compare("bob")==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
}
mich gibt ...
STRING : b
CHAR : a
NOPE...
STRING : b
CHAR : b
NOPE...
STRING : bob
STRING 2 : bob
WOW!
Warum denkt die Funktion der Unterkette und Zeichen sind nicht die gleichen. Was ist der kürzeste Weg, um chars und std :: string vars richtig zu vergleichen?
(ein kurzer Wortschwall vermeiden Neueinstufung meiner Frage .... fühlen Sie sich frei zu überspringen)
Als ich kürzest sage, meine ich, dass für aus dem Wunsch Beredsamkeit Codierung. Bitte beachten Sie, dies ist KEINE Hausaufgabenfrage. Ich bin promovierter Chemieingenieur und studiere als Teil der unabhängigen Forschung. Eine meiner letzten Fragen wurde vom Benutzer msw (der auch eine abfällige Bemerkung gemacht hat) als "Hausaufgabe" eingestuft, als ich nach Effizienz fragte, die ich an der Grenze des Missbrauchs betrachtete. Mein Code wird möglicherweise von anderen wiederverwendet, aber ich versuche, ihn leserlich und wartbar zu machen. Ich habe auch ein bizarres Verlangen, meinen Code soweit wie möglich so effizient wie möglich zu machen. Daher die Fragen nach Effizienz und Eloquenz.
Und vergessen Sie nicht, überprüfen Sie das <0