有没有一种简单的方法可以将矢量 int 集转换为字符串输出?
Is there an easy way to convert a vector int set to a string output?
我试图再次跳入代码,并尽我所能自学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();
}
作为旁注:我建议您将分解和字符串转换拆分为两个单独的函数:
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度