1

对于我的一项 C++ 作业,我必须解析如下语句:

设置 a = 10
设置 b = a
打印 b

为了解析这些语句,我使用了以下代码:

vector<string> stringSplitter(istringstream& tmp) {
vector<string> tokens;  
string str;
while(tmp.good()) {
    tmp >> str;
    tokens.push_back(str);              
}
return tokens;
}

对于错误检查,我想确保 SET 命令只有 4 个标记,而 PRINT 语句只有 2 个标记。因此,当我检查 SET 命令和 PRINT 命令时,我有相应的条件:

if (tokens.size() != 4) {
cerr << "Error in Line "<< lineNumber <<":Invalid format\n";
return -1;
}

if (tokens.size() != 2) {
cerr << "Error in Line "<< lineNumber <<":Invalid format\n";
return -1;
}

我遇到的问题是它适用于“SET a = 10”和“PRINT a”,因为如果在句子末尾有空格,如“SET a = 10”和“PRINT”,它就不起作用一个 ”

有人能帮忙吗?

4

2 回答 2

4

利用

while ( tmp >> str )

tmp.good()只说是否还有任何东西。您想知道从中获取另一个字符串是否有效。

于 2013-03-01T16:37:25.867 回答
0

运算符使用>>空格进行标记,因此如果在=.

而是使用更高级的功能进行拆分。

于 2013-03-01T16:25:08.723 回答