什么是最有效的方法来读取每行中的整数文件而不打开它?

时间:2015-03-07 16:47:32

标签: c++

在不打开每行的情况下读取整数文件的最有效方法是什么? 我有一个文件,每行只有整数,即:num.txt

100
231 
312
...

在我的程序中,我使用while循环来读取它;

int input = 0;
while(cin >> input)
{        
// Assignment
}

我使用time a.out <num.txt在Linux中读取它 事实证明,读取 1亿数字需要大约15秒(用户时间)。所以我想知道有没有更好的方法来缩短用户时间?

提前谢谢!

1 个答案:

答案 0 :(得分:4)

int input = 0;
ios_base::sync_with_stdio(false); 
//Add this statement and see the magic!
while(cin >> input)
{        
// Assignment
}

要使其超快(不推荐用于作业!),请使用getchar_unlocked()

int read_int() {
  char c = getchar_unlocked();
  while(c<'0' || c>'9') c = gc();
  int ret = 0;
  while(c>='0' && c<='9') {
    ret = 10 * ret + c - 48;
    c = getchar_unlocked();
  }
  return ret;
}

int input = 0;
while((input = read_int()) != EOF)
{        
// Assignment
}

Vaughn Cato的answer解释得很漂亮。