题目描述:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
输入描述:输入待截取的字符串及长度
输出描述:截取后的字符串
输入例子:
我ABC汉DEF
6
输出例子:我ABC
算法实现:
#include <iostream>#include <string>using namespace std;/************************************************ * Author: 赵志乾 * Date: 2017-2-16 * Declaration: All Rigths Reserved !!! ***********************************************/ int main(){ string instr; int len; cin>>instr; cin>>len; int i=0;int j=0;int odd=0; for( ;j<len;j++) { if(instr[j]<0) odd++; if(odd%2==0) i=j; } string ret(i+1,0); for(int k=0;k<i+1;k++) ret[k]=instr[k]; cout<<ret<<endl; return 0;}关键点:一个汉字的ascill标准存储时占用两个字符,且所占用的每个字节的ascill编码的最高位为1,也即是小于0。用这个特性来检测一个字节是否属于汉字。
新闻热点
疑难解答
图片精选