我以只读模式打开一个文件,读了一行,但我无法理解调试器显示的行内容的含义:
#include <cctype>
#include <fstream>
#include <iostream>
#include <string>
int main()
{
std::string fidMapPath = "./file.txt";
std::ifstream ifsFidMap(fidMapPath);
if(ifsFidMap.good() == false) {
std::cerr << "Error" << std::endl;
exit(1);
}
std::string line;
while(ifsFidMap.eof() == false)
{
std::getline(ifsFidMap, line);
std::cout << "Line: " << line << std::endl;
}
}
这是文本文件的内容:
; Document title
123;456
123;123
456;456
...
运行时,不会从中打印任何内容
line
变量;使用调试器,其内容等于之前的“”(空)
getline()
,以及
\\000\\000\\000\\000...
之后重复最多2411个字符。
这种行为的意义是什么?
以下是我的平台详细信息:
-
操作系统:Windows 10,通过NetBeans 8.2在Linux(Red Hat,内核2.6.32-431.5.1.el6.x86_64)上远程构建。
-
编译器:GCC 4.8.2(C++11)
-
调试器:GDB红帽企业Linux 7.6.1-47.el6
附言:我按照建议尝试移动
getline
在
while
论点:
while(std::getline(ifsFidMap, line))
但我仍然有同样的问题。