如何分割一个二进制字符串来比较每个数字
How do I split up a string of binary to compare each digit?
我必须取任意长度的二进制字符串,填充字符串直到它可以分成3组。假设我有一个字符串5,我在它的右端添加一个0,使它成为一个字符串6,然后将它们分成3,并将相同的数字与异或运算符进行比较。我知道如何将二进制字符串填满0直到它能被3整除,但我不知道如何将它除以3并比较数字。下面是我用0填充它的代码。
string binary;
cin >> binary;
while(binary.length() < 6){
binary = "0" + binary;
}
while(binary.length()%3 != 0){
binary = "0" + binary;
}
int size = binary.length();
使用for-loop
迭代字符串并创建新字符串将其添加到动态数组中然后您可以迭代动态数组
string *a = new string[ binary.length() ];
for(int i = 0; i <= binary.length() - 3; i +=3 )
{
a[i/3] = binary.substr(i, 3);
}
//now you have array of 3 length splitted parts
delete[] a;
编辑
如果您不需要将子字符串的三元组设置为每个子字符串的第一、第二和第三个元素的xor,只需使用
//to convert char to int I'm subtracting 48 from its ASCII
int xors[3] = { (int)binary[0] - 48, (int)binary[3] - 48, (int)binary[2] - 48, };
for(int i = 3; i <= binary.length() - 3; i +=3 )
{
xors[0] ^= (int)binary[i] - 48;
xors[1] ^= (int)binary[i+1] - 48;
xors[2] ^= (int)binary[i+2] - 48;
}
如果你想让三元组迭代,使用上面的代码并遍历它,像下面这样处理
为什么要转换成整数?可以用std::string
做这一切;-)完整的可运行程序。唯一的要求是初始字符串digits
的长度为3。任何预处理(例如添加填充'0')都将被忽略。
程序很容易适应分组不同数量的位,只需改变3
的值到所需的分组长度(并确保输入至少是那个长度)。
#include <string>
#include <iostream>
using namespace std;
int main() {
// Assume string has been made at least six long; although we settle for 3
string digits("000111101");
string::iterator ptr = next(digits.begin(), 3);
// copy first N digits into our accumulators
string xors(digits.begin(), ptr);
string::size_type idx = 0;
// Aggregate-xor the remaining digits
while( ptr!=digits.end() ) {
xors[ idx ] = (xors[idx]!=*ptr) ? '1' : '0';
ptr++, idx = (idx + 1) % xors.size();
}
cout << "Final xor'ed bits: " << xors << endl;
}
输出:
Final xor'ed bits: 010
相关文章:
- 为什么字符串比较的 == 运算符相对于任一字符串长度线性时间(似乎)?
- 字符串比较中的意外输出
- 如何执行不区分大小写的字符串比较?
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- <<运算符优先级与字符串比较
- ">"运算符和"<"运算符如何进行字符串比较?
- Qt C++11 字符串通过子字符串比较列出交集
- std::out_of_range字符串比较中的异常
- 我正在尝试从输入文件中读取,然后使用它们的子字符串比较字符串的特定部分
- 字符* 与uint8_t的字符串比较
- 用字符串 c++ 比较对向量的元素
- 使用循环进行词典字符串比较
- 如何为C++映射创建自己的字符串比较对象
- 不带比较()的字符串比较
- 与 IF 语句C++的字符串比较?
- 字符串比较在与变量一起使用时给出不同的输出
- 更快的字符串比较排序,用于唯一()
- C 字符串比较“祝您好运”&gt;“再见”
- C 奇怪的行为和字符串比较
- 子字符串与 std::memcmp 或字符串::比较的比较