2009-06-11 11 views
0

j'ai le code comme celui-cichaîne Concat en C++ (STL)

string xml_path(conf("CONFIG")); 

xml_path+=FILE_NAME; 

Où, fonction conf retourne char * et le nom du fichier est const char *

Je veux combiner à une ligne comme

xml_path(conf("CONFIG")).append(FILE_NAME) 

Comment puis-je le faire?

des suggestions?

+2

Tout le monde manque le fait que vous avez demandé une solution d'une ligne. (Mais pourquoi voulez-vous cela?) –

+0

Supposons que je veux concaténer 5 chaînes puis je peux le faire .append(). Append() Je ne dois pas faire en 5 étapes son comme faire en Java StringBuffer obj = new StringBuffer ("foobar"). Append ("foo"). Append ("bar"); – anish

Répondre

8

Question posée pour une ligne:

string xml_path = string(conf("CONFIG")) + string(FILE_NAME); 

(je suppose xml_path est le nom de la variable, et non pas une sorte d'appel dans une bibliothèque, je ne sais pas).

+0

+1. La meilleure réponse dans stackoverflow. – Farah

2
const char * f = "foo"; 
char * b = "bar"; 

string s = string(f) + b; 

Notez que vous ne pouvez pas utiliser append (-0 parce qu'aucun des cordes invvolved est un std:;. Chaîne Si vous voulez vraiment ajouter, il devra être procédé à deux étapes:

string s (f); 
s.append(b); 
4

Sinon, si vous voulez formater variable de type différent, utilisez un ostringstream.

par exemple.

std::ostringstream oss; 
int a = 2; 
char *s = "sometext"; 
oss<<s<<a<<endl; 
cout<<oss.str(); // will output "sometext2" 
+0

+1 Très utile! Merci! – User1