C++ c++;要增强的字符串::多精度::cpp_int

C++ c++;要增强的字符串::多精度::cpp_int,c++,boost,C++,Boost,如何将字符串转换为“boost::multiprecision::cpp_int” 此外,我有一个.txt文件,每个文件有100个数字,每个数字50位,我使用ifstream将它们逐行读取到字符串数组中。如何将数组中的每个字符串转换为cpp_int,然后将所有100个数字相加并得到总和?要转换单个字符串,请使用cpp_int构造函数:cpp_int tmp(“123”) 对于文本文件,通过std::getline,将循环中的每个数字作为std::string读取,然后放回std::vector。

如何将字符串转换为“boost::multiprecision::cpp_int”


此外,我有一个.txt文件,每个文件有100个数字,每个数字50位,我使用ifstream将它们逐行读取到字符串数组中。如何将数组中的每个字符串转换为
cpp_int
,然后将所有100个数字相加并得到总和?

要转换单个字符串,请使用
cpp_int
构造函数:
cpp_int tmp(“123”)

对于文本文件,通过
std::getline
,将循环中的每个数字作为
std::string
读取,然后放回
std::vector
。然后用后者来计算你的总数。例如:

#include <fstream>
#include <iostream>
#include <string>
#include <vector>

#include <boost/multiprecision/cpp_int.hpp>

using namespace boost::multiprecision;

int main()
{    
    std::vector<cpp_int> v;
    std::fstream fin("in.txt");

    std::string num;
    while(std::getline(fin, num))
    {
        v.emplace_back(num);
    }
    cpp_int sum = 0;
    for(auto&& elem: v)
    {
        std::cout << elem << std::endl; // just to make sure we read correctly
        sum += elem;
    }
    std::cout << "Sum: " << sum << std::endl;
}

cpp_inti(“1234567890121345678901234567890”)谢谢你的努力,但我已经找到了更好的方法(供我使用)。我只是使用:cpp_int[I]=cpp_int(mystring[I]);//我不知道它是否更好,但它确实有效。这正是我的意思,即创建和复制。字符串可以指定给变量,所以您不必硬编码该值。@基本上是一样的。为了清晰起见,我显式地编写了临时代码,但当然您可以只做
sum+=cpp_int{num}在循环内部。
std::string num;
cpp_int sum = 0;
while(std::getline(fin, num))
{
    cpp_int tmp(num);
    sum += tmp;
}
std::cout << "Sum: " << sum << std::endl;