流的fscanf类型函数?

时间:2012-02-08 00:07:49

标签: c++ file-io iostream fstream

我习惯使用fscanf进行简单的文件输入,因为它很简单。我试图转移到溪流,我希望能够做到这一点:

fscanf(file, %d %s, int1, str1);

正如您所看到的,通过文件读取相对容易,将您遇到的第一个int粘贴到一个容器中,然后将第一个字符串粘贴到char *中。我想要的是使用流功能使用fstreams。这是我想出来的,我的知识有限。

while((fGet = File.get() != EOF))
{
    int x;
    int y;
    bool oscillate = false;
    switch(oscillate)
    {
    case false:
        {
            x = fGet;
            oscillate = true;
            break;
        }
    case true:
        {
            y = fGet;
            oscillate = false;
            break;
        }
    }
}

基本上我想扫描一个文件并将第一个int放入x,第二个放入y。

由于一些原因,这是非常糟糕的,正如你所知道的那样,我从来没有真正使用它,但这是我所能想到的。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:5)

要从流中读取两个整数,您只需要

int x, y;
File >> x >> y;

相当于

fscanf(file, "%d %s", &int1, str1);

int x;
string s;

file >> x >> s;

并确保如果要检查读取是否有效,请将读取条件设置为:

if (file >> x >> s)

while (file >> x >> y)

或其他什么。