Vorrei confrontare un carattere letterale con il primo elemento di corda, per verificare la presenza di commenti in un file. Perché usare un char? Voglio farlo in una funzione, che accetta un carattere var per il commento. Non voglio permettere una stringa perché voglio limitare a un singolo carattere di lunghezza.Confrontando carattere letterale di std :: string in C++
Con questo in mente ho assunto il modo più semplice per andare sarebbe quello di affrontare il carattere e passare alla funzione confrontare la std :: della stringa. Tuttavia questo mi sta dando risultati non voluti.
Il mio codice è il seguente:
#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;
}
Mi dà ...
STRING : b
CHAR : a
NOPE...
STRING : b
CHAR : b
NOPE...
STRING : bob
STRING 2 : bob
WOW!
Perché la funzione pensano che il sub-string e carattere non sono gli stessi. Qual è il modo più breve per confrontare correttamente char e std :: string vars?
(una breve concione per evitano riclassificazione della mia domanda .... sentitevi liberi di saltare)
quando dico più breve voglio dire che da un desiderio per la codifica eloquenza. Si prega di notare, questa NON è una domanda a casa. Sono un dottorando in ingegneria chimica candidato e sto codificando come parte della ricerca indipendente. Una delle mie ultime domande sono stati riclassificati come "compiti a casa" dall'utente msw (che ha anche fatto una battuta sprezzante) quando ho chiesto di efficienza, che ho considerato al confine di abuso. Il mio codice può o non può essere riutilizzato da altri, ma sto cercando di rendere più facile da leggere e gestibile. Ho anche un bizzarro desiderio di rendere il mio codice il più efficiente possibile, ove possibile. Da qui le domande sull'efficienza e l'eloquenza.
E non dimenticare di controllare '0