【发布时间】:2012-02-17 01:20:54
【问题描述】:
我有一个如下所示的文本文件:
6
1 2 3 4 5 6
1 2
1 4
1 5
2 3
2 5
2 6
3 4
3 6
4 5
5 6
我使用以下内容将文件的行读入我的变量和数组:
//Read first line
if( std::getline(in, line))
{
std::istringstream iss(line);
while( iss >> a);
}
// read second line
int i = 0;
if( std::getline(in, line) )
{
std::istringstream iss(line);
while( iss >> b[i] )
{
++i;
}
}
// read rest of file matrix
int x = 0;
while( !in.eof())
{
if( std::getline(in, line))
{
std::istringstream iss1(line);
while( iss1 >> c[x])
{
++x;
}
}
}
在上面的代码中,a 是 int,b 和 c 是 int 数组,in 是 istream 运算符,line 是 std::string。它似乎工作正常,但是当我 std::cout 变量和数组时,我得到以下信息:
6
1,2,3,4,5,6
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
由于某种原因,数组c 似乎填充了全零,而不是文件中的数据。这对我来说很奇怪,因为我以完全相同的方式阅读前两行,而且它们似乎读得很好。有什么想法吗?
【问题讨论】:
-
如果将
while(!in.eof())更改为while(in)会发生什么? -
@wilhelmtell 进行了您建议的更改,结果相同。
-
为我工作...您的数据文件和代码是复制粘贴吗?
-
您的阵列够大吗?如果不是,则
in流对象可能已损坏。此外,基本调试应该很快就会给你一个答案——即使是好的,旧的printf()调试也会很快让你归零。