Experimento C ++ --- operação de subscrito de strings personalizadas

Operação de subscrito de strings personalizadas

Descrição

Defina a classe MyString, que é composta de strings com comprimento máximo de 100. Sobrecarregar seu operador subscrito:

Usado para localizar repetidamente o subscrito do caractere especificado ch na string.

Sobrecarregue seu operador de entrada para string de entrada.

Entrada

Insira uma string (com no máximo 100 caracteres) e um caractere sem espaço em branco.

Resultado

Especifique todas as posições do caractere na string.

Amostra de entrada

babababaab a

Saída de amostra

1
3
5
7
8
-1

DICA

Variáveis ​​estáticas são necessárias no operador subscrito.

É proibido usar STL, incluindo lista, vetor, string, etc.

Título dado código

int main()
{
    
    
    MyString mystr;
    char c;
    int pos;
    cin>>mystr>>c;
    do{
    
    
        pos = mystr[c];
        cout<<pos<<endl;
    }while(pos != -1);
    return 0;
}

código:

#include<iostream>
#include<stdio.h>
#include<string.h>

using namespace std;
int index=0;//设置全局变量

class MyString{
    
    
	char s[101];
public:
	friend istream& operator >>(istream &is,MyString &M){
    
    
		char c=getchar();
		int len=0;
		while(c!=' '){
    
    
			M.s[len++]=c;
			c=getchar();
		}	
		M.s[len]='\0';
		return is;
	}
	
	int operator[](char c){
    
    
		int i=index;
		for(;i<100&&s[i]!='\0';i++){
    
    
			if(c==s[i]){
    
    
				break;
			}
		}
		if(i==100||s[i]=='\0'){
    
    
			return -1;
		}else{
    
    
			index=i+1;
			return i;
		}
	}
};

int main()
{
    
    
    MyString mystr;
    char c;
    int pos;
    cin>>mystr>>c;
    do{
    
    
        pos = mystr[c];
        cout<<pos<<endl;
    }while(pos != -1);
    return 0;
}

Acho que você gosta

Origin blog.csdn.net/timelessx_x/article/details/115092052
Recomendado
Clasificación