以前用codeblock写C++,读取文件我是这样写的:
freopen("sample.gr","r",stdin);
几年之后的现在,用了mac os的g++编译这样的代码,也没问题。但是把代码拷贝给其他人在VS中就会编译报错:freopen may be unsafe.
更安全的方式如下:
#include <fstream>
std::ifstream file(FILENAME);
if (file.is_open()) {
std::string line;
while (getline(file, line)) {
// using printf() in all tests for consistency
printf("%s", line.c_str());
}
file.close();
}
代码中的 line 是string类型,用 c_str() 方法即可当作 char 数组来使用,然后配合 sscanf 处理格式化的文本效果更佳。如下,可以方便的把数字提取到对应的 a,b,c 变量中。
int a,b,c;
string line="1 2 3";
sscanf(line.c_str(), "%d %d %d", &a, &b, &c);