根据新浪微博上的消息, 有一位开发者不满 NPM(Node Package Manager) 的做法, 收回了自己的开源代码, 其中包括一个叫 left-pad 的模块, 就是这个模块把 JavaScript 里面的 React/Babel 干瘫痪了. 这是个什么样的模块? 就是在字符串前填充一些东西到一定的长度. 例如用 * 去填充字符串 GPLT, 使之长度为 10, 调用 left-pad 的结果就应该是 ******GPLT.Node 社区曾经对 left-pad 紧急发布了一个替代, 被严重吐槽. 下面就请你来实现一下这个模块.
输入格式:
输入在第一行给出一个正整数 N(≤10?4??) 和一个字符, 分别是填充结果字符串的长度和用于填充的字符, 中间以 1 个空格分开. 第二行给出原始的非空字符串, 以回车结束.
输出格式:
在一行中输出结果字符串.
输入样例 1:
15 _ I love GPLT
输出样例 1:
____I love GPLT
输入样例 2:
- 4 *
- this is a sample for cut
输出样例 2:
- cut
- (摘自 pintia.cn)
解答:
- #include<iostream>
- #include<iomanip>
- #include<string>
- using namespace std;
- int main()
- {
- char ch; // 输入的字符
- unsigned int len; // 输入的长度
- string str; // 输入的字符串
- cin>>len>>ch;
- getchar(); // 防止 getline() 接收'\n', 使用 getchar() 接收'\n'
- getline(cin,str); // 输入一行字符串, 包括空格
- if(len<str.length()) // 输出长度小于字符串长度, 则截取字符串
- {
- string new_str=str.substr(str.length()-len,str.length()); //string.substr() 函数截取字符串的部分
- cout<<new_str;
- }
- else // 输出长度大于字符串长度, 则使用 setw(int ) 控制输出长度, 使用 setfill(char ) 填充
- {
- cout<<setw(len)<<setfill(ch)<<str;
- }
- return 0;
- }
解析:
见代码注释.
来源: http://www.bubuko.com/infodetail-3003256.html