I am quite new to C++ and I am writing a program that needs an operator that does the same thing as the Python % operator. Is there any equivalent in C++?
I am quite new to C++ and I am writing a program that needs an operator that does the same thing as the Python % operator. Is there any equivalent in C++?
The C++20 std::format library serves this purpose:
#include <iostream> #include <format> int main() { std::cout << std::format("Hello {}!\n", "world"); }
For more info and guides on how to use it, see:
However, <format> isn't provided in some standard library implementations yet — see C++20 library features. In the meantime you can use https://github.com/fmtlib/fmt, which is equivalent (and was the inspiration for <format>).
C++ has several ways to do IO, mostly for historical reasons. Whichever style your project uses should be used consistently.
#include <cstdio>
int main () {
const char *name = "world";
// other specifiers for int, float, formatting conventions are avialble
printf("Hello, %s\n", name);
}
#include <iostream>
int main() {
std::string name = "world";
std::cout << "Hello, " << name << std::endl;
}
Pre C++20 quite a few people have provided their own formatting libraries. One of the better ones is {fmt}. C++ adopted this kind of formatting as [std::format][2]
#include <format>
#include <iostream>
#include <string>
int main() {
std::string name = "world";
std::cout << std::format("Hello, {}", name) << std::endl;
}
Notice that format produces format-strings, so it works with both ways to do IO, and/or other custom approaches, but if you use C-style IO it would probably be mostly weird to layer std::format on top, where the printf specifier would also work.