ifstream在文件中有数据时读取空白

时间:2013-07-31 23:14:48

标签: c++

我正在尝试使用c ++ ifstream从文本文件中读取数据,并且出于某种原因,下面的代码不起作用。该文件包含两个以空格分隔的数字。但是,此代码不会打印任何内容。任何人都可以向我解释有什么问题吗?

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void readIntoAdjMat(string fname) {
    ifstream in(fname.c_str());
    string race, length;
    in >> race >> length;
    cout << race << ' ' << length << endl;  
    in.close();
}

int main(int argc, char *argv[]) {
    readIntoAdjMat("maze1.txt");
}

1 个答案:

答案 0 :(得分:2)

您应该始终在成功时测试与外部实体的交互:

std::ifstream in(fname.c_str());
std::string race, length;
if (!in) {
    throw std::runtime_error("failed to open '" + fname + "' for reading");
}
if (in >> race >> length) {
    std::cout << race << ' ' << length << '\n';
}
else {
    std::cerr << "WARNING: failed to read file content\n";
}