【发布时间】:2015-09-21 20:44:53
【问题描述】:
我正在为我的一个课程编写标记器,但在读取文件时遇到了问题。
以这样的输入为例:
00 'this has a
01 Return
02 The end''s near
这是预期的输出:
(UNDEFINED,"'this has a
Return
The end''s near
",1)
但这是我得到的输出:
(UNDEFINED,"'this has a
Return
The end''s near
",1)
这是代码的一部分:
void readString(int& lineNumber, vector<Token*>& tokenList, ifstream& in)
{
char symbol;
int startingLineNumber = lineNumber;
string comment = "\'";
in.get(symbol);
do {
switch (symbol) {
case '\n':
lineNumber++;
comment += symbol;
symbol = ' ';
break;
case '\'':
if (in.peek() == '\'') {
comment += symbol;
in.get(symbol);
comment += symbol;
}
else
{
comment += symbol;
Token *newToken = NULL;
newToken = new Token("STRING", comment, startingLineNumber);
tokenList.push_back(newToken);
return;
}
break;
default:
comment += symbol;
}
} while (in.get(symbol));
readUndefined(comment, startingLineNumber, tokenList);
}
如果有人能帮我弄清楚为什么会这样,我将不胜感激。
谢谢
【问题讨论】:
-
我认为没有理由将
fstream传递给函数,一个普通的istream就足够了。然后,您可以使用字符串流来完成所需的最小示例或为此函数编写实际的单元测试。