问题描述 :
内容:对于字符串,实现以下复制功能数,并编写main函数测试这些函数:
实验内容:使用默认形参或者重载实现
cpy函数:
原型可为:
string cpy(string src, int startIndex, int endIndex)
功能:从字符串src复制部分字符形成新字符串并返回。可指定复制的起始位置和结束位置,即从startIndex到endIndex之间的所有字符都复制到结果字符串中。startIndex默认为0, endIndex默认为到字符串尾部。
比如,
cpy(src): 将src的所有字符都复制并返回
cpy(src, 3):将src从下标为3的位置直到结尾的所有字符都复制并返回
cpy(src, 3, 5):将src的第3、4、5个字符复制并返回
main函数可参考以下代码编写:
int main()
{
int num, length, index, startIndex, endIndex;
string src, dest;
while(cin >> num)
{
switch(num)
{
case 1:
cin >> src;
cout << cpy(src) << endl;
break;
case 2:
cin >> src >> startIndex;
cout << cpy(src, startIndex) << endl;
break;
case 3:
cin >> src >> startIndex >> endIndex;
cout << cpy(src, startIndex, endIndex) << endl;
break;
}
}
return 0;
}
输入说明 :
输入时,每组测试数据包含两行,第一行输入一个整数,指定需要完成的操作,第二行为该操作需要的数据。
对于每个整数对应的操作及其相应数据的输入方式如下(输入的字符串中不包含空格):
1:对应cpy,第二行输入字符串src
2:对应cpy,第二行输入字符串src和整数startIndex,以空格分隔。复制从startIndex开始的子字符串,下标从0开始。
异常处理:如果startIndex不合法,则不复制任何字符,结果为空字符串。
3:对应cpy,第二行输入字符串src和整数startIndex、endIndex,以空格分隔。
异常处理:如果startIndex、endIndex不合法,则不复制任何字符,结果为空字符串。
输出说明 :
对于每组测试数据,输出对应的结果。如果结果为空字符串,则输出一个空行。
每行行首与行尾无多余空格,第一行之前与最后一行之后无多余空行。
输入范例 :
1
aabbccdd
2
abcdef 4
2
abcdef 7
3
abcdef 0 3
3
abcdef 0 6
3
abcdef 3 2
3
abcdef 0 0
输出范例 :
aabbccdd
efabcd
a
题解代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<algorithm>
#include<set>
#include<vector>
#include<queue>
using namespace std;
string cpy(string src)
{
string ans="";
ans=src;
return ans;
}
string cpy(string src, int startIndex)
{
string ans="";
int i;
int l=src.length();
l--;
if(startIndex>l || startIndex<0)
return "";
for(i=startIndex;i<src.length();i++)
ans+=src[i];
return ans;
}
string cpy(string src, int startIndex, int endIndex)
{
string ans="";
int i;
int l=src.length();
l--;
if(endIndex>l || endIndex<0 || startIndex>l || startIndex<0 ||startIndex>endIndex)
return "";
for(i=startIndex;i<=endIndex;i++)
ans+=src[i];
return ans;
}
int main()
{
int num, length, index, startIndex, endIndex;
string src, dest;
while(cin >> num)
{
switch(num)
{
case 1:
cin >> src;
cout << cpy(src) << endl;
break;
case 2:
cin >> src >> startIndex;
cout << cpy(src, startIndex) << endl;
break;
case 3:
cin >> src >> startIndex >> endIndex;
cout << cpy(src, startIndex, endIndex) << endl;
break;
}
}
return 0;
}