我在C++ 11中實現一個簡單的文件解析器時遇到問題,該解析器逐行讀取文件並標記行。它應該妥善管理其資源。解析器的用法應該是這樣的:在C++中實現逐行文件解析器時遇到困難
Parser parser;
parser.open("/path/to/file");
std::pair<int> header = parser.getHeader();
while (parser.hasNext()) {
std::vector<int> tokens = parser.getNext();
}
parser.close();
所以Parser
類需要一個成員std::ifstream file
1)構造函數應該如何初始化this->file
(或std::ifstream* file
?)?
2)open
方法應如何將this->file
設置爲輸入文件?
3)文件的下一行應該如何加載到字符串中? (這是你會用的:std::getline(this->file, line)
)?
你能給點建議嗎?理想情況下,您可以將該課程作爲代碼示例進行勾畫。
是否'的std :: getline'工作如果不是從while循環調用,但每次調用getNext()時都是如此? – clstaudt
@cls是的,它的工作原理完全一樣。確保你用'if(std :: getline(file,line))'檢查它是否成功。 –