有没有一种简单的方法可以将向量int集转换为字符串输出?

时间:2019-09-07 18:45:43

标签: c++

我试图再次跳入代码,并尽我所能教自己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等。...

1 个答案:

答案 0 :(得分:0)

就像 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();
}

作为旁注:我建议您将分解和字符串转换分为两个单独的函数: