c++ - 有没有一种简单的方法可以将向量 int 集转换为字符串输出?
问题描述
我正在尝试再次跳入代码并尽我所能自学 C++ 的来龙去脉。我有以下代码,我一直在研究,需要将其调整到我发现数字的阶乘分解的项目中。
该代码似乎有效,我可以将其输出到控制台,但我想将其处理为字符串变量并返回,但我遇到的主要问题是将它从向量 (int , int) 转换为 std::string 变量.
我尝试添加变量并将它们转换为字符串,但每次我这样做时,我似乎都会丢失数据。
struct factor {
long prime;
long power;
};
std::string decomp(int n) {
std::vector<factor> result;
for (long i = 2; i <= n; ++i) {
auto prime = true;
for (auto &f : result) {
for (auto r = i; r % f.prime == 0; r /= f.prime) {
prime = false;
++f.power;
}
}
if (prime) {
result.push_back({ i, 1 });
}
}
for (auto& f : result)
{
std::cout << f.prime;
if (f.power > 1) {
std::cout << "^" << f.power;
}
std::cout << " ";
}
}
我将它格式化为第一个是素数,第二个是素数的幂。我希望它在我的字符串中将 (3, 7) 显示为 3^7,在所有新素数之间有一个空格,例如 3^7 5^3 等....
解决方案
就像Bob__说的那样,您可以将std::stringstream
其用作std::cout
.
#include <sstream>
std::string to_string(std::vector<factor> const& decomp)
{
std::stringstream ss;
for (auto const& f : decomp)
{
ss << f.prime;
if (f.power > 1)
ss << '^' << f.power;
ss << ' ';
}
return ss.str();
}
附带说明:我建议您将分解和字符串转换拆分为两个单独的函数:
推荐阅读
- python - 获取程序中的计算次数
- java - 将 view.jsp 中的日期传递给我的 Java Portlet
- python - 如何比较数据框中的两个字符串列表以获取任何匹配项以在 python 中获得 True 或 False?
- c# - 即使实际和预期匹配,断言也会失败
- excel - 有没有办法将电子表格中的特定列绑定到 GUI [VBA] 中的组合框
- sql - 当不同列有标签时,如何在sql server中设置列显示严格标签或null
- java - 多模块项目的Spring Cloud客户端配置
- r - 尝试使用 shortRead 包和 readFastq 函数读取解压缩的 FASTQ 文件
- graphql - GraphQL:从突变中查询另一个表中的值
- python - 无法在 Windows 的 python 上安装 openAI-gym