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;i out我猜您正在读/写一个整数数组。您可能在读取方法中错误地读取了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?文件的格式是什么?您预期的行为是什么?您实际得到的是什么?