对一个中英文混合的字符串,按指定字节n切割输出。
思路:1、汉字是两个字节,字母为一个字节
2、判断指定字节n指向的是否是半个汉字,若是,则输出n-1个字节长度,若不是,则输出n个字节长度
#include<iostream>
#include<string>
using namespace std;
bool IsHalf(const string& s, int size) //是否是半个字节
{
int len = size;
bool ishalf = false;
for (int i = 0; i < len; i++)
{
if (s.at(i) < 0) ishalf = !ishalf;
}
return ishalf;
}
int main()
{
int N = 0;
string input;
while (cin>>input>>N)
{
if (input.size() > N)
{
string temp = input;
int count=0;
for (int i = 0; i+ N <= input.size(); i++)
{
if (IsHalf(temp, N)) //半个汉字
{
cout << input.substr(i, N - 1) << endl; //输出前面的字符
i = i + N-2 ; //i从0开始,循环的时候有个i++,让i指向输出字符的最后一个
temp = input.substr(i+1, input.size() - i + 1);
}
else //没有半个
{
cout << input.substr(i, N) << endl;
i = i + N-1;
temp = input.substr(i+1, input.size() - i+1);
}
count = i;
}
if (input.size()-count> 0)
cout << input.substr(count+1, input.size()-count);
}
else
{
cout << input.c_str() << endl;
}
}
system("pause");
return 0;
}