题目要求:
输入里面既含有中文又含义英文,按照我们平时读的习惯,截取任意长度的字符串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
*/
结果: