签到积分,如何正确建立字符串数组,停止输入

签到积分原题

有一个应用程序的签到送积分的规则如下:

首先,每天登录将至少得到 1 分;
其次,若用户在前一天也登录了,当天得分为前一天得分加一分;
最后,每天得分的上限为 5 分。
给定一个字符序列 ss,ss 表示一个用户每天签到的情况,若某天签到,记为 Y,若某天没有签到,记为 N。请计算该用户能够获得的积分总数。

输入格式
一个字符序列:保证仅由大写字母 Y 和 N 组成。

输出格式
单个正整数,表示用户获得的积分之和。

我的代码
#include 
using namespace std;
int main(){
    int x=0;
    int i,n,s[n];
    bool Y=true;
    bool N=false;
    for (int i=0;i<10000;i++){
    cin>>s[n];
    }
    while(true){
        x=2*x+1;
        if(x=5){
        x=x+5;
        }
    }
    while(false){
        x=x;
    } 
    cout<<x;
    return 0;
}

运行结果及报错内容

输入若干YN,光标闪动,无法停止输入,按回车键没有输出

我想要达到的结果

修正代码

#include <iostream>

int main()
{
    std::string s;
    std::cin >> s;
    int total = 0;
    int n = 0;
    for (std::size_t i = 0; i < s.size(); i++)
    {
        if (s[i] == 'Y')
        {
            if (n < 5)
                n++;
            total += n;
        }
        else
        {
            n = 0;
        }
    }
    std::cout << total;
    return 0;
}