2010-02-23 5 views
3

Comment convertir une chaîne avec de l'espace entre guillemets. Par exemple: Je récupère la chaîneChaînes doubles citées en C++

c:\program files\abc.bat 

Je veux convertir cette chaîne « c:\program files\abc.bat », mais seulement si l'espace dans la chaîne.

+0

Est-ce un 'std :: string' ou' const char *? – kennytm

+0

C'est std :: string – Avinash

+0

Que faut-il qu'il se passe s'il y a déjà un double guillemet dans la chaîne? est un espace dans la chaîne? – dave4420

Répondre

5

En supposant que la chaîne STL s contient la chaîne que vous souhaitez vérifier un espace.

if (s.find(' ') != std::string::npos) 
{ 
    s = '"' + s + '"'; 
} 
+0

Serait-il plus efficace d'utiliser ''"' 'au lieu de' "\" "'? –

+0

Oui, ce serait. J'ai édité la réponse, merci. –

2

Recherche d'espaces blancs. . Si trouvé ajouter \ » à l'avant et à la fin de la chaîne serait un guillemet échappé

+0

Avant d'inclure la chaîne dans ", recherche d'existant" et préfixez-les avec \ .Cela gérera les chaînes avec "à l'intérieur". –

0
std::string str = get_your_input_somehow(); 

if (str.find(" ") != std::string::npos) { 
    str = "\"" + str + "\""; 
} 
+0

Cela ne devrait-il pas être 'str.find ('')! = Std :: string :: npos)'? – Manuel

+0

Si les espaces sont au début, 0 est renvoyé. – kennytm

+0

En tout cas, pas de bonne programmation lorsque vous utilisez int comme bool. –

Questions connexes