【華為機試108題】按位元組擷取字串
阿新 • • 發佈:2019-02-16
題目描述
編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如”我ABC”4,應該截為”我AB”,輸入”我ABC漢DEF”6,應該輸出為”我ABC”而不是”我ABC+漢的半個”。
輸入描述:
輸入待擷取的字串及長度
輸出描述:
擷取後的字串
示例1
輸入
我ABC漢DEF
6
輸出
我ABC
一般的思路,判斷str字串的第n位是否大於128就知道是否是漢字的前一位元組了。
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
int N;
while(cin>>s>>N){
string ss;
if(s[N-1]>=128)//判斷尾字元是否是漢字的前一個位元組
ss=s.substr(0,N-1);
else
ss=s.substr(0,N);
cout<<ss<<endl;
}
return 0;
}
實際上,string類自帶這個功能,所以可以把上述程式改寫成:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str;
int n;
while(cin>>str>>n)
{
string temp;
temp =str.substr(0,n);
cout<<temp<<endl;
}
return 0;
}