题目描述:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我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。用这个特性来检测一个字节是否属于汉字。
运行结果展示: