一、在GBK编码下,请编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,同时忽略字符串中的数字后输出最终结果。
输入描述:一行字符串和待截取的字节数。
输出描述:单独的一行截取后的字符串。
(做的时候通过40%,修改后还未验证)
#include <iostream>
#include <string>
using namespace std;
string subString(string str, int subBytes)
{
int bytes = 0;
for (int i = 0; i < str.length(); i++)
{
if (bytes == subBytes)
{
return str.substr(0, i);
}
char c = str[i];
if (c < 256)
{
bytes += 1;
}
else
{
bytes += 2;
if (bytes - subBytes == 1)
{
return str.substr(0, i);
}
}
}
return str;
}
int main()
{
string instr;
string outstr;
int len, m_in = 0;
cin >> instr;
cin >> len;
for (int k = 0; k < instr.length(); k++)
{
if (!(instr[k] - '0' >= 0 && instr[k] - '0' <= 9))
{
outstr += instr[k];
}
}
cout << subString(outstr, len);
return 0;
}