1. 程式人生 > >【華為機試108題】按位元組擷取字串

【華為機試108題】按位元組擷取字串

題目描述
編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如”我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; }