我会简短而简单。在确保用户能够成功打开文件之后,我编写了以下代码来从inputFile中获取一行。
string line;
int counter = 0;
DynIntStack stack;
while (!inputFile.eof())
{
getline(inputFile, line);
stringstream inputLine(line);
counter++;
//I NEED TO DO IT HERE
}
这将用于编写程序来检查输入cpp文件中的平衡paranthesis,我必须使用堆栈。从我检查过的主题中我理解经典的CS作业:)
计数器在每一行之后更新,如果行号有一个开括号,则行号(计数器)将被推入堆栈,如果它是一个右括号,它必须从堆栈中弹出。在这些之后,输出应该如下所示:
block: 3 - 3
block: 12 - 14
block: 10 - 14
block: 5 - 16
Syntax error in line 21.
但我不知道如何检查我通过char获取char的行。如果找到开始或结束括号,我需要一个循环来检查字符并应用前面提到的内容。如何通过char检查行char。
非常感谢你:)
答案 0 :(得分:5)
但我不知道如何查看我用char获取char的行
这是你想要的吗?
string line;
int counter = 0;
DynIntStack stack;
while (getline(inputFile, line))
{
counter++;
for(size_t i = 0; i < line.length(); i++) {
// line[i] is i'th character
if(line[i] == '(') {
// do stuff
}
else if(line[i] == ')') {
// do stuff
}
}
}
答案 1 :(得分:1)
除了Kaidul Islam的正确答案,std::string
支持range based for loops。
string line;
int counter = 0;
DynIntStack stack;
while (getline(inputFile, line))
{
++counter;
for (char const c : line)
{
if (c == '(')
{
// do stuff
}
else if (c == ')')
{
// do stuff
}
}
}