如何将字符串转换为“boost::multiprecision::cpp_int”?
此外,我有一个 .txt 文件,每个 50 位有 100 个数字,我使用 ifstream 将它们逐行读取到字符串数组中。如何将数组中的每个字符串转换为 a cpp_int
,然后将所有 100 个数字相加并得到总和?
要转换单个字符串,请使用cpp_int
构造函数:cpp_int tmp("123");
。
对于文本文件情况,将循环中的每个数字作为std::string
via读取std::getline
,然后放回std::vector<cpp_int>
. 然后使用后者来计算您的总和。例子:
#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;
}
Run Code Online (Sandbox Code Playgroud)
PS:您可以在没有std::vector
, 的情况下通过cpp_int
您在循环内构造的临时文件并将其分配给sum
:
std::string num;
cpp_int sum = 0;
while(std::getline(fin, num))
{
cpp_int tmp(num);
sum += tmp;
}
std::cout << "Sum: " << sum << std::endl;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2805 次 |
最近记录: |