题目描述
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
输入描述:
输入待截取的字符串及长度
输出描述:
截取后的字符串
示例1
输入
我ABC汉DEF
6
输出
我ABC
一般的思路,判断str字符串的第n位是否大于128就知道是否是汉字的前一字节了。
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
int N;
while(cin>>s>>N){
string ss;
if(s[N-1]>=128)//判断尾字符是否是汉字的前一个字节
ss=s.substr(0,N-1);
else
ss=s.substr(0,N);
cout<<ss<<endl;
}
return 0;
}
实际上,string类自带这个功能,所以可以把上述程序改写成:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str;
int n;
while(cin>>str>>n)
{
string temp;
temp =str.substr(0,n);
cout<<temp<<endl;
}
return 0;
}