790 Stimmen

Verkettung eines std::string und eines int

Ich dachte, das wäre ganz einfach, aber es gibt einige Schwierigkeiten. Wenn ich

std::string name = "John";
int age = 21;

Wie kombiniere ich sie, um eine einzige Zeichenfolge zu erhalten? "John21" ?

1 Stimmen

Herb Sutter hat einen guten Artikel zu diesem Thema: "Die Streichinstrumentenbauer von Manor Farm" . Er deckt Boost::lexical_cast , std::stringstream , std::strstream (die veraltet ist) und sprintf vs. snprintf .

1 Stimmen

Lassen Sie mich dies noch ergänzen: Ich habe 'str = "hi"; str += 5; cout << str;' ausprobiert und keinen Effekt gesehen. Es stellte sich heraus, dass dies operator+=(char) aufruft und ein nicht druckbares Zeichen hinzufügt.

36voto

Kevin Punkte 597

Dies ist der einfachste Weg:

string s = name + std::to_string(age);

32voto

David G Punkte 90243

Wenn Sie C++11 haben, können Sie std::to_string .

Beispiel:

std::string name = "John";
int age = 21;

name += std::to_string(age);

std::cout << name;

出力します。

John21

18voto

user12576 Punkte 378

Die einfachste Lösung scheint mir zu sein, die sprintf Funktion:

sprintf(outString,"%s%d",name,age);

15voto

Seb Rose Punkte 3568
#include <string>
#include <sstream>
using namespace std;
string concatenate(std::string const& name, int i)
{
    stringstream s;
    s << name << i;
    return s.str();
}

12voto

Zing- Punkte 2017
#include <sstream>

template <class T>
inline std::string to_string (const T& t)
{
   std::stringstream ss;
   ss << t;
   return ss.str();
}

Dann würde Ihre Verwendung etwa so aussehen

   std::string szName = "John";
   int numAge = 23;
   szName += to_string<int>(numAge);
   cout << szName << endl;

Gegoogelt [und getestet :p ]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X