Interpolera en sträng

C++:
Interpolera en sträng

Så här gör du:

#include <iostream>
#include <string>
using namespace std;

int main() {
    int age = 25;
    string name = "Erik";
    // Med modern C++ (C++20 och senare), kan vi använda std::format
    cout << std::format("Hej, jag heter {} och jag är {} år gammal.", name, age) << endl;
    // Utdata: Hej, jag heter Erik och jag är 25 år gammal.
    
    // För äldre C++ versioner användes stringstream
    stringstream ss;
    ss << "Hej, jag heter " << name << " och jag är " << age << " år gammal.";
    cout << ss.str() << endl;
    // Utdata är densamma
    return 0;
}

Djupdykning

Förr i tiden slogs text ihop manuellt med + eller << operatörerna, vilket var oklart och ibland ineffektivt. C++20 introducerade std::format som är inspirerat av Python’s str.format() och ger en smidigare och mer läsbar syntaks. Alternativ finns för äldre C++ som boost::format eller att manuellt hantera ostringstream. När du interfolierar strängar, kom ihåg att effektiviteten kan variera beroende på metoden – std::format och ostringstream är generellt sett långsammare än + eller <<, men skillnaden är försumbar i små program.

Se även