C++在线编程处理特殊数组输入[1,2,3,4,5]

对于牛客等平台在进行在线编程时,通常需要手动编写数据的输入部分。对于常规的数组通常按照如下规则(空格分隔)进行输入,对于此类输入,直接可以在for循环里面使用多次cin来对数组的元素进行输入。

Input: 1 2 3 4 5

vector<int> nums;
for(int i = 0; i < 5; i++)
{
    int tmp;
    cin>>tmp;
    nums.push_back(tmp);
}

        但是对于如下所示的输入,则需考虑中括号[]和逗号,对数据输入造成的影响,否则可能在处理数据输入时就出现了错误,导致后面程序的通过率一直为0。对于此类输入,我们可以将该行数据按照字符串类型进行输入,然后通过对字符串进行分割的方式来获取每一个元素,具体实现流程如下:

Input: [1,2,3,4,5]

//1.按照字符串类型读取整行的输入
string str;
getline(cin, str);

//2.对整行的字符串按照"[","]",","进行分割,使用index记录下标值
vector<int> index;
for (int i = 0; i < str.size(); i++)
{
    if(str[i] == '[' || str[i] == ',' || str[i] == ']')
        index.push_back(i);
}

//3.按照步骤2查找到的下标值对数据进行分割,使用取子串的方法(substr)和字符串转数字的方法(stoi)
int start = 1;
vector<int> nums;
for (int i = 1; i < index.size(); i++)
{
    string tmp = str.substr(start, index[i] - start);
    nums.push_back(stoi(tmp));
    start = index[i] + 1;
}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值