簡體   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