C++实验---自定义字符串的下标运算

自定义字符串的下标运算

Description

定义类MyString,由长度不超过100的字符串组成。重载其下标运算符:

用于重复求指定字符ch在串中的下标。

重载其输入运算符,用于输入字符串。

Input

输入一个不含空白符的字符串(长度不超过100个)和一个字符。

Output

指定字符在字符串中的所有位置。

Sample Input

babababaab a

Sample Output

1
3
5
7
8
-1

HINT

下标运算符中需要用到静态变量。

禁止使用STL,包括list、vector和string等。

题目给定代码

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

code:

#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;
}

猜你喜欢

转载自blog.csdn.net/timelessx_x/article/details/115092052