Cpp中的“ 1”和“ 1”是否不同?如果是,那怎么办?

问题描述

将字符数组的元素与“ 1”而不是“ 1”进行比较时,会显示错误

#include <bits/stdc++.h>
using namespace std;

bool sortbysec(const pair<int,int> &a,const pair<int,int> &b) 
{ 
    return (a.second > b.second); 
}
int main() {
    int t;
    cin>>t;
    while(t--)
    {
        int N,K;
        cin>>N>>K;
        char s[N];
        vector<pair<int,int>> zero;
        int j;
        cin>>s;
        if(s[0]=='0') j=0;     // No error when I use '0' instead of "0"
        for(int i=1;i<N;i++)
        {
            if(s[i]=="1"&&s[i-1]=="0") zero.push_back(make_pair(j,i-j));    // [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]
            else if(s[i]=="0"&&s[i-1]=="1") j=i;
        }
        if(s[N-1]=="0") zero.push_back(make_pair(0,N-j));
        sort(zero.begin(),zero.end(),sortbysec);
        for(auto i=zero.begin();i!=zero.end();i++)
        {
            cout<<i->first<<" "<<i->second<<endl;
            if(K==0) break;
            if(i->first==0)
            {
                K--;
                zero.erase(i);
            }
            else 
            {
                if(K>=2)
                {
                    K-=2;
                    zero.erase(i);
                }
            }
        }
        int res=0;
        for(auto i=zero.begin();i!=zero.end();i++)
        {
           res+=i->second;
        }
        cout<<res<<endl;
    }
    return 0;
}

[错误] ISO C ++禁止比较指针和整数[-fpermissive] 根据错误,其中一个是指针,另一个是整数(如果是),那么它们中的哪一个是什么以及如何使用?

解决方法

Cpp中的“ 1”和“ 1”是否不同?

是的

如果是,那么如何?

第一个是一个以null结尾的char数组,后者是一个char。

根据错误,其中一个是指针,另一个是整数(如果是),那么它们中的哪一个是什么以及如何使用?

从技术上讲,操作数之一是我提到的数组。但是,当数组用作右值时,它将隐式转换为指向第一个元素的指针。因此,"1"是转换后的指针。 s[0]是字符。