int d = names.size() - 2;
char c = char(d);
return names[0] + ", " + names[1] + " and " + c + " others like this";
现在,我必须返回存储在变量"中的人数;d";作为单个字符串;d";是整数,不能直接相加。那么,我应该做些什么来存储";d";作为字符串或字符添加到返回字符串中?
std::ostringstream
在这里会对您有很大帮助,因为您可以简单地向它写入不同类型的值(例如字符串和数字(。
在下面的示例中,我将它与<fmt>
库一起使用,但您可以使用<format>
库(C++20,MSVC(,或者只写入oss
,就像写入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
在C++中,有两种不同类型的字符串:char
数组和std::string
。
std::string[最简单的方法。]
std::string
的行为与其他编程语言中的字符串类似(它们可以连接(。要将int
转换为std::string
,请使用std::to_string(val)
(请参阅https://en.cppreference.com/w/cpp/string/basic_string/to_string)。
我会避免在这里使用C样式字符串,因为它们有固定的大小,需要手动删除