截取含有中文的字符段

題目要求:

輸入裏面既含有中文又含義英文,按照我們平時讀的習慣,截取任意長度的字符串n(n<=總長度)

例:china中國verygood天朝nice

fn(5) = china

fn(6) = china中

fn(8) = china中國v

#include <stdio.h>
#include <string>
#include<iostream>
using namespace std;

bool is_word(char c) {  //判斷是否爲中文
	if (c & 0x80)
		return true;
	return false;
}
int main(){
	string a;
	int len,l,r;
	int num = 0,is_ZH=0;
	int index[1010];
	cout << "輸入字符串:";
	cin >> a;
	len = a.length();

	cout << "index[]  ";
	for (int i = 0; i < len; i++) {  //把字符串中的中文化爲一個字節,存入int型數組。最後以int數組截取字符串,看下面例子。
		if (is_word(a[i])) {
			index[num++] = i + 2;
			i++;
		}
		else
		index[num++] = i+1;
		cout << index[num - 1]<<" " ;
	}
	cout << endl;

	int ca = 7;
	while (ca--){
		cout << "輸出你想截取的段,0 ~ " << endl;
		cin >> r;
		cout << "index[r-1]:"<<index[r - 1] << endl;
		cout << a.substr(0, index[r - 1]) <<endl;
	
	}
	
	system("pause");
	return 0;
}	

/*
例:
字符串:china中國nice奈斯
int數組:
下標:0 1 2 3 4 5 6  7  8  9 10 11 12 
值  :1 2 3 4 5 7 9 10 11 12 13 15 17
*/

結果: 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章