有没有办法一次从文件中输入一个数字? 例如,我想将以下整数存储在整数向量中,因为它很长,即使是很长的int也不能保存。
12345678901234567900
那么如何从文件中读取这个数字,以便我可以:
vector<int> numbers;
number.push_back(/*>>number goes here<<*/)
我知道上面的代码并不完整,但我希望它能解释我想要做的事情。 此外,我已经尝试过谷歌,到目前为止,它已被证明是无益的,因为只有C的教程即将出现,并没有真正帮助我太多。
感谢提前, Dan Chevalier
答案 0 :(得分:1)
这可以通过多种方式完成,所有这些方法都可以将每个字符'0'...'9'转换为相应的整数0..9。以下是单个函数调用的完成方式:
#include <string>
#include <iostream>
#include <vector>
#include <iterator>
#include <functional>
#include <algorithm>
int main()
{
std::string s = "12345678901234567900";
std::vector<int> numbers;
transform(s.begin(), s.end(), back_inserter(numbers),
std::bind2nd(std::minus<char>(), '0'));
// output
copy(numbers.begin(), numbers.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
}
从文件中读取时,如果除了您的数字之外该文件中没有其他内容,则可以直接从istream迭代器中读取字符串和transform(),甚至是transform():
std::ifstream f("test.txt");
std::vector<int> numbers;
transform(std::istream_iterator<char>(f),
std::istream_iterator<char>(),
back_inserter(numbers),
std::bind2nd(std::minus<char>(), '0'));
答案 1 :(得分:0)
您可以使用char c; cin.get(c);
一次阅读字符,并使用c -= '0'
将其转换为数字。但也许您可以将其作为字符串阅读或使用类似BigNum的内容。
答案 2 :(得分:0)
离开我的头顶,这应该填满一个字符数组,然后你可以迭代。我意识到这不是你所追求的,但这是我的首选方法。
void readfile(char *string)
{
ifstream NumberFile;
NumberFile.open("./Number"); //For a unix file-system
NumberFile >> string;
NumberFile.close();
}
此外,要对您可以使用的实际数字执行操作:
CharacterArray[ElementNumber] - '0'
并且当数字足够小以适合数据类型时,你可以将数字的每个元素乘以10加到其索引的幂。