Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Ifstream将数字从文本文件添加到C样式数组_C++_Arrays_File_Text_Ifstream - Fatal编程技术网

C++ 使用Ifstream将数字从文本文件添加到C样式数组

C++ 使用Ifstream将数字从文本文件添加到C样式数组,c++,arrays,file,text,ifstream,C++,Arrays,File,Text,Ifstream,我在上面的题目上有困难。我尝试了以下方法,但效果不正确 void ArrayIntStorage::read(ifstream& in) { if(in.is_open()) { while(!in.eof()) { in.getline(arrayStorage, sizeof(in)); } } } ofstream& ArrayIntStorage::write(ofstrea

我在上面的题目上有困难。我尝试了以下方法,但效果不正确

void ArrayIntStorage::read(ifstream& in)
{
    if(in.is_open())
    {
        while(!in.eof())
        {
            in.getline(arrayStorage, sizeof(in));
        }
    }
}

ofstream& ArrayIntStorage::write(ofstream &out) const
{
    for (int i = 0; i < sizeof arrayStorage; i++)
    {
        out << arrayStorage[i] << endl;
    }
    return out;
}
void ArrayIntStorage::read(ifstream&in)
{
if(in.is_open())
{
而(!in.eof())
{
in.getline(arrayStorage,sizeof(in));
}
}
}
ofstream&ArrayIntStorage::write(ofstream&out)常量
{
对于(int i=0;iout我猜您正在读/写一个整数数组。您可能在读取方法中错误地读取了sizeof(in),而不是sizeof(arrayStorage)。

您的代码有几个问题。对于初学者,您可以 不要向我们显示
arrayStorage
的声明,因此我们必须 猜猜看:我猜
intarraystorage[N]
,(其中
N
是一些 常数),然后,用于阅读:

  • 在循环中使用`istream::eof`永远都是不正确的 函数只有在输入失败时才有意义;在 也就是说,当没有其他可供选择的选项时,它可以返回'false' 读取,即使最后一次输入成功,也返回'true' 您感兴趣的函数是'fail',这就是 在中使用'istream'时间接调用 需要“bool”的上下文
  • `getline`需要一个'char[]`,并读取字符,而不是 int's
如果文件包含的都是这些int,那么标准习惯用法 阅读它们的方法是:

for (int i = 0; in && i < N; ++ i) {
    in >> arrayStorage[i];
}
for(int i=0;in&&i>阵列存储[i];
}
在实践中,您可能需要更多:如果 文件没有包含足够的int?如果包含太多? 在故障发生后,您需要验证 是由于文件的结尾,而不是一些随机的胡言乱语 或者您希望(或需要)进一步验证格式, 确保一行中的int数不超过一个

输出函数看起来几乎正常;最后一个索引应该是
N
,而不是
sizeof arrayStorage
(它返回数组中的字节数,而不是元素数), 之后,您需要检查是否没有错误 关闭文件;没有什么比 一个说它成功了的程序,而实际上它只是
数据进入磁盘。

什么类型的arrayStorage?文件的格式是什么?您预期的行为是什么?您实际得到的是什么?