我正在从C转换到C ++,我正在尝试打开并读取输入文件,同时将变量分配给读入的值。例如,我有6个变量:a
,b
,c
,x
,y
,z
和我的文件: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 >>
,如果是,那么这个例子的语法是什么?
答案 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>