根據新浪微博上的消息,有一位開發者不滿NPM(Node Package Manager)的做法,收回了自己的開源代碼,其中包括一個叫left-pad的模塊,就是這個模塊把javascript里面的React/Babel干癱瘓了。這是個什么樣的模塊?就是在字符串前填充一些東西到一定的長度。例如用*去填充字符串GPLT,使之長度為10,調用left-pad的結果就應該是******GPLT。Node社區曾經對left-pad緊急發布了一個替代,被嚴重吐槽。下面就請你來實現一下這個模塊。
輸入格式:
輸入在第一行給出一個正整數N(≤104)和一個字符,分別是填充結果字符串的長度和用於填充的字符,中間以1個空格分開。第二行給出原始的非空字符串,以回車結束。
輸出格式:
在一行中輸出結果字符串。
輸入樣例1:
15 _ I love GPLT
輸出樣例1:
____I love GPLT
輸入樣例2:
4 * this is a sample for cut
輸出樣例2:
cut
(摘自pintia.cn)
解答:
1 #include<iostream> 2 #include<iomanip> 3 #include<string> 4 using namespace std; 5 int main() 6 { 7 char ch; //輸入的字符 8 unsigned int len; //輸入的長度 9 string str; //輸入的字符串 10 cin>>len>>ch; 11 getchar(); //防止getline()接收'\n',使用getchar()接收'\n' 12 getline(cin,str); //輸入一行字符串,包括空格 13 if(len<str.length()) //輸出長度小於字符串長度,則截取字符串 14 { 15 string new_str=str.substr(str.length()-len,str.length()); //string.substr()函數截取字符串的部分 16 cout<<new_str; 17 } 18 else //輸出長度大於字符串長度,則使用setw(int )控制輸出長度,使用setfill(char )填充 19 { 20 cout<<setw(len)<<setfill(ch)<<str; 21 } 22 return 0; 23 }
解析:
見代碼注釋。