用C ++计算End of Line,同时阅读'words'

时间:2014-06-20 05:39:19

标签: c++ ifstream word-count line-count

我正在编写一个程序,它的第一步是从大约30MB的文本文件中读取。 这些文件是0到255之间的一系列数字,偶尔会有换行符(ImageJ文本图像,通过RGB堆栈)。 我可以毫无问题地将数据读入vector<int>,并为RGB部分形成vector<vector<int> >。但是,我想知道我的图像的高度和宽度。

总数可以通过myVector[0,1,2].size()获得,但除非我也知道纵横比,否则我无法获得高度/宽度。

如果我使用file.get(nextChar); if (nextChar == '\n'){...},则代码将继续阅读,afaik。

我试着在阅读文件的同时阅读一行中的字符,但除了增加的运行时间(这不是一件大事)之外,我还有一个更严重的问题,即文件包含{ {1}}空格,而不是真实空格,所以虽然我原本以为每个数字都是4个字符,例如tab123(space)等,但事实证明它们是12(space)(space)并且123(tab),具有不同的字符数。

我如何计算每行的单词?示例代码如下:

12(tab)

以下代码无法准确计算:

void imageStack::readFile(const char *file, std::vector<int> &values)
{
    std::ifstream filestream;
    filestream.open(file);

    if (!filestream.fail())
    {
        std::cout<< "File opened successfully: " << file << std::endl;
        int countW=0;
        char next;
        while (!filestream.eof())
        {
            int currentValue;
            filestream >> currentValue;
            values.push_back(currentValue);
            countW++;
            if (filestream.get(next)=='\n')
                // This doesn't work, but I think if I used filestream.get(next);
                // if (next == '\n') that would check correctly,
                // it would just move the file marker
            {
                std::cout<< "countW = " << countW << std::endl;
            }
        }
        filestream.close();
        values.pop_back();
    }
    else
    {
        std::cout << "File did not open! Filename was " << file << std::endl;
    }
}

0 个答案:

没有答案