char* VS std::basic_string
HeartlessWind · · 个人记录
Ops: char*
Read:
fgets(buf, sizeof buf, stdin);
Find:
auto idx = strstr(str, par);
auto iter = std::search(str, str + len, par, par + lenp);
auto iter_df = std::search(str, str + len, std::default_searcher(par, par + lenp)); // C++17
auto iter_bm = std::search(str, str + len, std::boyer_moore_searcher(par, par + lenp)); // C++17
auto iter_bmh = std::search(str, str + len, std::boyer_moore_horspool_searcher(par, par + lenp)); // C++17
Replace:
std::copy(par + l, par + r, str + idx);
Substr:
std::copy(str + l, str + r, out);
From char:
num = atoi(str); // or `atol`, `atof`
std::from_char(str, str + len, num); // C++17
To char:
sprintf(str, "%d", &num);
std::to_char(str, str + (sizeof str), num); // C++17
Ops: std::string
Read:
std::getline(std::cin, str);
Find:
auto idx = str.find(par);
auto iter = std::search(str.begin(), str.end(), par.begin(), par.end());
auto iter_df = std::search(str.begin(), str.end(), std::default_searcher(par.begin(), par.end())); // C++17
auto iter_bm = std::search(str.begin(), str.end() std::boyer_moore_searcher(par.begin(), par.end())); // C++17
auto iter_bmh = std::search(str.begin(), str.end(), std::boyer_moore_horspool_searcher(par.begin(), par.end())); // C++17
Replace:
str.replace(start_iter, end_iter);
More
Substr:
out = str.substr(pos, len);
From char:
num = std::stoi(str); // or `stol`, `stoll`, ...
std::istringstream ss{str};
ss >> num;
To char:
std::ostringstream ss;
ss << num;
str = ss.str();
str = std::format("{}", num); // C++20