流的fscanf类型函数

fscanf type function for streams?

本文关键字:函数 类型 fscanf 流的      更新时间:2023-10-16

我习惯于使用fscanf进行简单的文件输入,因为它使它变得简单。不过,我正在尝试转向流媒体,我希望能够做到这一点:

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

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

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。

正如你所知,这很糟糕,有几个原因,我从来没有真正使用过这个,但这是我能想到的全部。有更好的方法吗?

要从流中读取两个整数,所要做的就是

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)

或者其他什么。