c ++中的ifstream - 编译器问题

时间:2015-09-30 16:18:57

标签: c++ fstream ifstream getline

我正在从C转换到C ++,我正在尝试打开并读取输入文件,同时将变量分配给读入的值。例如,我有6个变量:abcxyz和我的文件:input.dat如下所示:

1     2     3
4     5     6

所以在C中我会写:

infile = fopen("input.dat","r");
fscanf(infile, "%d \t %d \t %d \n %d \t %d \t %d \n",&a,&b,&c,&x,&y,&z);

我正在尝试使用ifstream在C ++中执行相同的操作,但我在编译简单程序时遇到了问题:

#include <iostream>
#include <fstream>

using namespace std;

main(){
    int a, b, c, x, y, z;

    ifstream infile("input.dat", ifstream::in); //Open input.dat in input/read mode 

    if(infile.is_open()){
       /*read and assign variables from file - not sure how to do this yet*/
       return 0;
    } else {
        cout << "Unable to open file." << endl;
    }
    infile.close();

    return 0;
}

当我尝试编译这个时,我收到了大量的错误,看起来像是:

 "Undefined reference to std::cout"

我确信这只是一些愚蠢的错误,但我似乎无法弄明白。我试图遵循以下示例中描述的语法:http://www.cplusplus.com/doc/tutorial/files/

问题:

1.如何在上面的代码中正确使用fstream

2.如何读取文件输入并将其分配给变量。我知道可以使用getline来完成。是否可以使用提取operator >>,如果是,那么这个例子的语法是什么?

2 个答案:

答案 0 :(得分:2)

不清楚编译(可能是链接)问题,从流中读取很简单:

infile >> a >> b >> c >> d >> e;
假设你的数据是以空格分隔的,那么

就可以解决这个问题。

答案 1 :(得分:0)

试试这个

#include <iostream>
#include <fstream>

using namespace std;

int main() {
    int a, b, c, x, y, z;

    ifstream infile;
    infile.open("input.dat", ios::in); //Open input.dat in input/read mode 

    if (infile.is_open()) {

        infile >> a >> b >> c >> x >> y >> z;
        cout << a << b << c << x << y << z;
        infile.close(); //you close here since file would really be open here
        return 0;
    }
    else {
        cout << "Unable to open file." << endl;
    }

    return 0;
}

你可以替换

  

infile&gt;&gt; a&gt;&gt; b&gt;&gt; ℃;

getline(infile, PUTSTRINGHERE);

如果您想将整行作为字符串变量,但必须包含

#include <iostream>