我有这样的功能来读取在从文件中的所有整数。 问题是,当我读到字母I引发新线和我总是1,寻求不行的末尾。我怎么能写这个功能较好?

int v;
    while (!in.eof())
    {
        while (in >> v)
            cout << v << " ";

        cout << endl;
        if (in.eof())
            break;
        in.clear();
        in.seekg(1, ios::cur);
        int a;
        a=0;
    }
有帮助吗?

解决方案

如果您的文件只包含由空格(包括)换行分隔的整数那么这应该足够了。

while( in >> v )
{
    // do something with v
}

该文件之后,如果in.fail()为假,并且in.eof()为真,则到达了文件的末尾没有格式错误。否则返回错误读取int发生。

如果您收到无效输入,并希望从,那么你需要找出你想怎么监仓。如果你想跳过直到行的结束并重新开始解析,你可以使用这样的事情。

in.clear();
in.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );

其他提示

第一个问题上面的代码不会在管线的端部止挡。结果 操作者>>()忽略 “的空白字符”,其包括换行字符。

这可怎么写比较好?点击 这是很难说不知道你正在尝试与数字可以做,什么文件的输入格式!

但如果我是书面方式本我将它写在不使用这些行:

    if (in.eof())
            break;
    in.clear();
    in.seekg(1, ios::cur);

当处理一个格式化文本文件是非常罕见的看到使用寻求()的

Assumign:结果    文件只包含数字。结果    你想所有的数字读入一个容器中。

std::vector<int>    data;

std::copy(  std::istream_iterator<int>(in),  // An iterator from current point
            std::istream_iterator<int>(),    // To end of file.
            std::inserter(data)              // Destination (insert into data)
         );
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top