对于我一整天都无法弄清楚的事情,这可能是一个基本问题。下面是一段 C++ 代码:
Escape::Escape(std::string filename)
{
std::ifstream file;
file.open(filename.c_str());
if (file.is_open()) {
file >> gridWidth >> gridHeight >> nKeys;
std::cout << "gridWidth = " << gridWidth << std::endl;
std::cout << "gridHeight = " << gridHeight << std::endl;
std::cout << "nKeys = " << nKeys << std::endl;
/* irrelevant code below */
基本上,我希望这段代码读取文本文件的前三个整数并将它们保存到变量 gridWidth、gridHeight 和 nKeys 中。这些是名为“Escape”的类的私有整数。以下是文本文件的前几行:
8
8
1
BUL--/EUR--/BUL--/BU---/BU---/BU---/BU---/BUR--/
(more text below)
这是此代码的一些示例输出:
gridWidth = 107764358
gridHeight = -991553646
nKeys = 0
多次运行此代码,gridWidth
并且gridHeight
始终是垃圾并且 nKeys 始终为 0。关于我做错了什么有什么想法吗?
编辑:问题出在我传递给file.open()
. 我传入了相对文件名,虽然可以打开,但不能链接到 ifstream。该问题已通过使用文本文件的绝对文件名解决。