題目描述:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。但是要保證漢字不被截半個,如"我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。用這個特性來檢測一個字節是否屬于漢字。
新聞熱點
疑難解答
圖片精選