gpt4 book ai didi

c++ - 在 C++ 中一次读取一个文件

转载 作者:搜寻专家 更新时间:2023-10-31 00:01:27 24 4
gpt4 key购买 nike

我正在开发一个需要将整数从文件读入二维数组的程序。这个概念很简单,我通常对文件 I/O 没意见。我的问题是该文件包含 20 行,每行 18 个数字。数字不以空格分隔。一个例子是:

123456789987654321
192837465564738291

我必须将每个单独的数字读入二维数组。我创建了一个 for 循环,但我没有从循环的文件 I/O 部分获得所需的输出。有没有办法做到这一点,或者我是否需要使用变通方法,例如将行读入字符串/数组并将其分开?这让我发疯。代码中已经打开并测试了infile。 GRIDSIZE大小为9,grid为二维数组

int n;

for(int i=0; i<GRIDSIZE; i++)
{
for(int j=0; j<GRIDSIZE; j++)
{
infile.get()>>grid[i][j];//This is causing the problem
// infile >> n //Also tried this, not working
// grid[i][j] = n;
cout<<grid[i][j]<<endl;
}
}

最佳答案

调用 get() on an ifstream返回单个字符,转换为 int。所以尝试改变

infile.get()>>grid[i][j];

grid[i][j] = infile.get();

这将为您提供数字的 ASCII 值。然后您可以使用 isdigit() (如 stefaanv 所述)以确保您确实有一个数字,然后从中减去 0x30(= 48 或“0”)以获得整数值(从 ASCII chart 可以看出,数字从 0x30 到0x39).例如:

int n = infile.get();
if(isdigit(n)) {
grid[i][j] = n - '0';
}

关于c++ - 在 C++ 中一次读取一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10027107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com