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 !!!!";