int d = names.size() - 2;
char c = char(d);
return names[0] ", " names[1] " and " c " others like this";
Now, I have to return the number of people stored in variable "d" as a single string but as "d" is an integer, it cannot be directly added. So, what should I do to store the value of "d" as a string or char to add in the return string?
CodePudding user response:
std::ostringstream
will help you a lot here, as you can simply write values of different types (e.g. strings and numbers) to it.
In the example below I use it together with the <fmt>
library, but you could use the <format>
library instead (C 20, MSVC), or just write to oss
as you would write to std::cout
.
#include <fmt/core.h>
#include <iostream> // cout
#include <sstream> // ostringstream
#include <string>
#include <vector>
auto f(const std::vector<std::string>& names) {
if (names.size() >= 2) {
int d = names.size() - 2;
std::ostringstream oss{};
oss << fmt::format("{}, {} and {} others like this", names[0], names[1], d);
return oss.str();
}
return std::string{};
}
int main() {
std::vector<std::string> names{ "Anne", "Brian", "Charlize", "Daniel" };
std::cout << f(names);
}
// Outputs:
//
// Anne, Brian and 2 others like this
CodePudding user response:
In C , there are two different types of string: char
arrays and std::string
.
std::string [Easiest approach.]
std::string
s behave similarly to strings in other programming languages (they can be concatenated, ). To convert an int
to an std::string
, use std::to_string(val)
(see https://en.cppreference.com/w/cpp/string/basic_string/to_string).
I would avoid using C-style strings here as they have a fixed size and need to be deleted manually.