2011-09-02 64 views
0

我的问题涉及使用std::count(或其他适当的函数)来计算空格分隔文件的列。计算空格分隔文件的列

我目前使用的是这样的:

std::ifstream inFile("file"); 
    int lines = std::count(std::istreambuf_iterator<char>(inFile), 
      std::istreambuf_iterator<char>(), '\n'); 

计数线。

由于所有的线是相等的(相同的数据量),会像

std::ifstream inFile("file"); 
    int columns = std::count(std::istreambuf_iterator<char>(inFile), 
      std::istreambuf_iterator<char>('\n'), ' ') + 1; 

做什么,我需要什么?

感谢

编辑:

我的意思是,如果在"file"有像1 21 [many spaces here] 2数据,会的columns值反正是2或不是?

+1

为什么不尝试呢? –

+0

@Ed:因为我只有一台机器,目前正在忙于大量计算,与此同时我正在考虑如何解决这个问题。 – Federico

回答

0

不,你会计算空格,而不是列。您需要标记您的线路,例如通过boost::tokenizer

+0

在简单情况下,'列数=空格数+ 1'。 –

+0

是真的,但OP询问'[这里有很多空间]' –

+0

我明白了。如果我不被允许(不要问为什么)使用外部库? – Federico