字符字符输入来自文件,用C ++表示

时间:2010-10-07 01:22:25

标签: c++ input integer

有没有办法一次从文件中输入一个数字? 例如,我想将以下整数存储在整数向量中,因为它很长,即使是很长的int也不能保存。

12345678901234567900

那么如何从文件中读取这个数字,以便我可以:

vector<int> numbers;
number.push_back(/*>>number goes here<<*/)

我知道上面的代码并不完整,但我希望它能解释我想要做的事情。 此外,我已经尝试过谷歌,到目前为止,它已被证明是无益的,因为只有C的教程即将出现,并没有真正帮助我太多。

感谢提前, Dan Chevalier

3 个答案:

答案 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加到其索引的幂。