Merkkijonon interpolointi

C++:
Merkkijonon interpolointi

Miten:

#include <iostream>
#include <string>

int main() {
    int age = 25;
    std::string name = "Jarkko";
    // C++20 std::format toimintoa hyödyntäen
    std::string greeting = std::format("Hei! Nimeni on {0} ja olen {1} vuotta vanha.", name, age);
    std::cout << greeting << std::endl;
    return 0;
}

Tuloste tulisi olla:

Hei! Nimeni on Jarkko ja olen 25 vuotta vanha.

Syväsukellus

Merkkijonon interpolointi on ollut ohjelmoinnissa käytössä jo vuosikymmeniä. Esimerkiksi C:ssä yhdisteltiin tekstejä printf-funktion avulla, mutta C++ otti askeleen eteenpäin tarjoten paremman typeturvallisuuden ja helpomman syntaksin std::format-funktion myötä C++20:ssä. Aiemmin saatettiin käyttää std::ostringstream-luokkaa tai raskaita sprintf-funktioita, mutta std::format tekee saman tehokkaammin ja ilman buffer overflow -riskejä.

Vaihtoehtoisia menetelmiä ovat esimerkiksi string stream -luokat (std::stringstream, std::ostringstream) ja boost::format kirjaston käyttö, jos C++20 ei ole käytössä.

Katso Myös