C++ 在字符串的特定位置添加空白
我有一个字符串“00000000000000010011010010”。我想在每八个字符后添加一个空格,使其表示一个32位整数。例如:“00000000000000000000000010011010010”。最简单的方法是什么?对于range-v3库,代码非常容易理解:C++ 在字符串的特定位置添加空白,c++,string,binary,whitespace,range-v3,C++,String,Binary,Whitespace,Range V3,我有一个字符串“00000000000000010011010010”。我想在每八个字符后添加一个空格,使其表示一个32位整数。例如:“00000000000000000000000010011010010”。最简单的方法是什么?对于range-v3库,代码非常容易理解: using namespace ranges; auto res = s | views::chunk(8) | views::join(' ') | to<std::string>; 使用名称空间范围; aut
using namespace ranges;
auto res = s | views::chunk(8) | views::join(' ') | to<std::string>;
使用名称空间范围;
auto res=s | views::chunk(8)| views::join(“”)to;
下面是一个。构造一个新的以空格分隔的字符串
由于插入有点昂贵,您可能需要简单地构造一个新字符串并从原始字符串填充它,在每个包含8个字符的子字符串(最后的子字符串除外)后适当地添加空格
#包括
#包括
#包括
std::string分块(const std::string&s,
const std::size\u t chunk\u size=8U,
常量字符分隔符=“”){
std::字符串结果;
const auto s_size=s.size();
结果.保留(s_大小+(s_大小/块大小));
对于(std::size\u t i=0U;istd::是否可以在循环中保留空格直到字符串结束?请记住,插入字符将更改长度。是否确实要在字符串中放置空格,还是只显示包含这些空格的字符串?请注意,创建新字符串将比在placeNice中修改当前字符串更简单。请注意,问题-此处这是一个非常好的设计,这类范围API是C++标准的20标准的,是的,绝对的。<代码> CUBUD>代码>在C++ 20中是不可用的,尽管<代码>连接< /代码>是。你仍然可以自己编写而不需要太多的努力:)尼斯,一个优秀的新C++特性,允许编写更多功能性的风格代码SI。类似于其他现代语言,如Swift。@djacob它只是一个位运算符:),但是是的,该运算符对于ranges来说是超负荷的,具有unix管道式语义。你可以在这里找到c++20,但也可以观看一些很好的youtube视频。ranges::to
也错过了c++20,但它将在'2'中出现3,在此之前,您可以使用range-v3中的版本。
#include <cstddef>
#include <iostream>
#include <string>
std::string chunked(const std::string& s,
const std::size_t chunk_size = 8U,
const char delimiter = ' ') {
std::string result;
const auto s_size = s.size();
result.reserve(s_size + (s_size / chunk_size));
for (std::size_t i = 0U; i < s_size; i += chunk_size) {
result += s.substr(i, chunk_size);
if (i + chunk_size < s_size) {
result += delimiter;
}
}
return result;
}
int main() {
std::cout << chunked({"00000000000000000000010011010010"});
// 00000000 00000000 00000100 11010010
return 0;
}
#include <cstddef>
#include <iostream>
#include <string>
void printAsChunks(const std::string& s,
const std::size_t chunk_size = 8U) {
for (std::size_t i = 0U; i < s.size(); i += chunk_size) {
std::cout << s.substr(i, chunk_size)
<< ((i + chunk_size < s.size()) ? " " : "");
}
}
int main() {
printAsChunks("00000000000000000000010011010010");
// 00000000 00000000 00000100 11010010
return 0;
}