substr是用来截取字符串中一段子字符的函数,最常用的形式如下:
string s("abcdefghijk");
string a=s.substr(0,8);//获得字符串s中0位开始,长度为8的子串
得到的a为:abcdefgh。
substr(start,length);
start为原字符串的起始位置;
length为从原字符串中要截取的长度,如果为0的话,表示从起始位置开始一直到结尾。
append是用来在一个字符串中添加几个相同的新字符或一个新的字符串或新字符串中的几个字符。
1.添加几个相同的新字符
string s("abcdefghijk");
string a=s.append(8,'0');
得到的a为:abcdefghijk00000000。
2.添加一个新的字符串
string s1("abcdefghijk");
string s2("lmnopq");
string a=s1.append(s2);
得到的a为:abcdefghijklmnopq。
3.添加新字符串中的几个字符
string s1("abcdefghijk");
string s2("lmnopq");
string a=s1.append(s2,0,3);
得到的a为:abcdefghijklmn,第二个参数为要添加的新字符串起始位置,第三个参数为要添加新字符串的长度。
下面是使用了上述两个函数来解决问题的例子:
输入描述:
首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)。
输出描述:
按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
示例1
输入
复制
2
abc
123456789
输出
复制
abc00000
12345678
90000000
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
vector<string> vec1;
string str;
string str1;
for(int i=0;i<n;i++)
{
cin>>str;
str1=str;
if(str1.size()<=8)
{
str1=str1.append(8-str.size(),'0');
cout<<str1<<endl;
}
if(str.size()>8)
{
string str2;
int count=str.size()/8;
int res=str.size()%8;
for(int i=0;i<count;i++)
{
str2=str1.substr(i*8,8);
cout<<str2<<endl;
}
if(res!=0)
{
str2=str1.substr(count*8,str1.size()-count*8);
str2=str2.append((count+1)*8-str1.size(),'0');
cout<<str2<<endl;
}
}
}
}
return 0;
}