【发布时间】:2015-09-30 16:18:56
【问题描述】:
我正在从 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 >>,如果可以,此示例的语法是什么?
【问题讨论】:
-
如何编译,更重要的是,如何链接?
-
将缺失的 int 添加到 main() 后,提供的代码编译正常。
-
因此,这与文件输入完全无关,而与 C++ 程序的基本编译有关。您应该尝试过 Hello World 并发现问题仍然存在。听起来你在写
gcc,而不是g++。您还需要main的返回类型。 -
根据您的 cmets,我找到了解释一切的线程:stackoverflow.com/questions/3178342/… 感谢您的帮助 - 我没有意识到我不能在没有链接的情况下使用 gcc。从现在开始将使用 g++。
标签: c++ fstream ifstream getline