HJ4.字符串分隔
#include <iostream>
#include <string>
#include <vector>
const int CONST_LEN = 8;
std::vector<std::string> make_strs(std::string s) {
std::vector<std::string> strs;
std::string tmp;
int l, r;
for (l = 0; l < s.length(); l += CONST_LEN) {
r = l + CONST_LEN - 1;
if (r < s.length()) {
tmp = s.substr(l, CONST_LEN);
} else {
tmp = s.substr(l, s.length() - l);
tmp.append(r + 1 - s.length(), '0');
}
strs.emplace_back(tmp);
}
return strs;
}
int main() {
std::string s;
std::vector<std::string> strs;
while (getline(std::cin, s)) {
strs = make_strs(s);
for (auto& i : strs) {
std::cout << i << std::endl;
}
}
return 0;
}
解题思路:
难点1:考察对string的操作是否熟练;
知识点:
知识点1:字符串截取函数的用法,其中start表示截取开始的下标,length表示截取的长度。length为空时,持续截取到字符串末尾;
stringvar.substr(start [, length ]) // length > 0
知识点2:字符串追加函数的用法
1). 向string的后面加C-string
string s = "hello";
const char *c = "out here";
s.append(c); // 把c类型字符串s连接到当前字符串结尾
s = "hello out here";
2). 向string的后面加C-string的一部分
string s = "hello";
const char *c = "out here";
s.append(c, 3); // 把c类型字符串s的前n个字符连接到当前字符串结尾
s = "hello out";
3). 向string的后面加string
string s1 = "hello";
string s2 = "wide";
string s3 = "world";
s1.append(s2);
s1 += s3; //把字符串s连接到当前字符串的结尾
s1 = "hello wide";
s1 = "hello wide world";
4). 向string的后面加string的一部分
string s1 = "hello", s2 = "wide world";
s1.append(s2, 5, 5); // 把字符串s2中从5开始的5个字符连接到当前字符串的结尾
s1 = "hello world";
string str1 = "hello", str2 = "wide world";
str1.append(str2.begin() + 5, str2.end()); // 把s2的迭代器begin()+5和end()之间的部分连接到当前字符串的结尾
str1 = "hello world";
5). 向string后面加多个字符
string s1 = "hello";
s1.append(4, '!'); //在当前字符串结尾添加4个字符!
s1 = "hello !!!!";