通过char C++检查stringstream line char

bye*_*ner 2 c++ algorithm stack input char

我会简短而简单.在确保用户能够成功打开文件之后,我编写了以下代码来从inputFile中取一行.

string line;
int counter = 0;

DynIntStack stack;

while (!inputFile.eof())
{
    getline(inputFile, line);
    stringstream inputLine(line);
    counter++;

    //I NEED TO DO IT HERE
}
Run Code Online (Sandbox Code Playgroud)

这将用于编写程序来检查输入cpp文件中的平衡paranthesis,我必须使用堆栈.经验丰富的CS作业,据我所知,我已经检查了:)

计数器在每一行之后更新,如果它有一个开括号,则行号(计数器)将被推入堆栈,如果它是一个右括号,它必须从堆栈中弹出.在这些之后,输出应该如下所示:

block: 3 - 3
block: 12 - 14
block: 10 - 14
block: 5 - 16
Syntax error in line 21.
Run Code Online (Sandbox Code Playgroud)

但我不知道怎么检查我得到char的字符行.如果找到开始或结束括号,我需要一个循环来检查字符并应用前面提到的内容.如何通过char检查行char.

  • 禁止使用堆栈以外的任何数据容器.

非常感谢你 :)

Kai*_*dul 6

但我不知道怎么检查我得到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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,首先检查eof然后读取数据是错误的方法.首先读取数据,然后检查读取是否失败. (2认同)