繁体   English   中英

通过char C ++检查stringstream line char

[英]Checking stringstream line char by char C++

我会简短而简单。 在确保用户能够成功打开文件之后,我编写了以下代码来从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的字符行

这是你想要的吗?

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
        }
    }
}

除了Kaidul Islam的正确答案之外,还有一个基于循环std::string支持范围

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
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM