来自文件无空格数字的C ++ cin

时间:2012-01-05 01:16:30

标签: c++ arrays

在c ++中,如何查找未分隔成数组的数字文件?

例如78940725450327458如何才能将这些数字放置到列表[0] = 7,列表[1] = 8,列表[2] = 9等等。

4 个答案:

答案 0 :(得分:1)

std::vector<int> numList;

while(std::cin) {
    char c;
    std::cin >> c;
    if(std::cin.eof())
        break;
    if(c < '0' || c > '9') {
        // handle error
    }
    numList.push_back(c - '0');
}

答案 1 :(得分:0)

使列表成为char s。

的数组 然后

cin >> list[0]会读取一个字符。

答案 2 :(得分:0)

我建议你把所有的行读成int变量然后用这样的循环来做:

int temp = a % 10;

这将每次给你最后一个号码,请务必在此之后更新原始号码,最后要做的就是把它放到数组中,这就是容易的部分。

答案 3 :(得分:0)

有很多方法可以做到这一点。我可能会做以下事情:

#include <algorithm>
#include <fstream>
#include <iterator>
#include <vector>

int ascii2int(int value) // this could be a lambda instead
{
    return value - '0';
}

int main()
{
    std::vector<int> nums;
    std::ifstream input("euler8Nums.txt");
    if (input)
    {
        // read character digits into vector<int>
        nums.assign(std::istream_iterator<char>(input), std::istream_iterator<char>());
        // transform ascii '0'..'9' to integer 0..9
        std::transform(nums.begin(), nums.end(), nums.begin(), ascii2int);
    }

    // your code here

    return 0;
}