C++ 如何从用户控制台输入读取多个字符串行?

C++ 如何从用户控制台输入读取多个字符串行?,c++,string,C++,String,我一直在试图解决一个需要未知数量的字符串输入的问题。 下面是我的代码,它没有按要求工作。我只是需要帮助,如何采取多行输入 #include<bits/stdc++.h> using namespace std; void solve(string s) { // cout << "String is : " << s << endl; stack<char> stk; for(int i =

我一直在试图解决一个需要未知数量的字符串输入的问题。 下面是我的代码,它没有按要求工作。我只是需要帮助,如何采取多行输入

#include<bits/stdc++.h>
using namespace std;
void solve(string s)
{
    // cout << "String is : " << s << endl;
    stack<char> stk;
    for(int i = 0; s[i] != '\0'; i++)
    {
        if(s[i] == '[')
            stk.push(s[i]);
        else if(s[i] == ' ')
        {
            if(stk.top() == s[i])
                stk.pop();
            else
                stk.push(s[i]);
        }
        else if(s[i] == ']')
        {
            if(stk.top() == ' ')
                stk.pop();
            if(stk.top() == '[')
                stk.pop();
        }
    }
    cout << (stk.empty()? "YES" : "NO");
    // while(!stk.empty())
    // {
    //     cout << stk.top();
    //     stk.pop();
    // }
    // cout << '\n';
}
int main()
{
    string s;
    while(getline(cin, s))
    {
        solve(s);
    }
}
#包括
使用名称空间std;
无效解算(字符串s)
{

//cout您的多行输入功能工作正常:

您没有得到任何输出,可能是因为分段错误:

要修复它,只需将调用
stk.top()
的所有条件更改为:
if(stk.top()='')
,例如:
if(不是stk.empty()和stk.top()='')
,即首先检查堆栈是否为空,然后调用
stk.top()
:。

相关: Input is : [] [ [ ] ] [ []] [] ] ][