C++ c++;要增强的字符串::多精度::cpp_int
如何将字符串转换为“boost::multiprecision::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。
此外,我有一个.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;