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
- C++20
std::format: https://en.cppreference.com/w/cpp/utility/format/format - Historiaa
printf-funktiosta: https://en.wikipedia.org/wiki/Printf_format_string std::ostringstream: https://en.cppreference.com/w/cpp/io/basic_ostringstream