C++ C++;:关于在位集中插入
使用STD位集。我正在将一个sting转换为二进制。如果我这样做,它会起作用C++ C++;:关于在位集中插入,c++,C++,使用STD位集。我正在将一个sting转换为二进制。如果我这样做,它会起作用 string myString = "Hi"; for ( int i = 0; i < myString.size(); ++i) { cout << bitset<8>(myString.c_str()[i]) << endl; } string myString = "Hi"; for ( int i = 0; i < myString.size(); ++
string myString = "Hi";
for ( int i = 0; i < myString.size(); ++i)
{
cout << bitset<8>(myString.c_str()[i]) << endl;
}
string myString = "Hi";
for ( int i = 0; i < myString.size(); ++i)
{
cout << bitset<8>foo(myString.c_str()[i]) << endl;
}
string myString=“Hi”;
对于(int i=0;i cout这是使用构造函数创建对象的类型(参数)
语法与调用对象的函数或调用运算符的值(参数)
语法之间的区别
位集
具有采用整数类型的构造函数,但它没有调用运算符
不过,我不了解总体目标。如果您想写出每个字符的位,第一个方法可以工作。(第二个代码段不编译。)您希望第三个不同的代码片段实现什么?如果您想收集所有字符的所有位,那么您的位集不够大;它只有8位的空间
在旁注中,s.c_str()[i]
是不必要的。使用s[i]
,或者更好的是,在字符串上使用for范围循环:
for (auto c : myString) {...}
我想转换为base 2,然后存储在动态分配的
位集或向量。我更喜欢将所有内容保留在位集中
位集向量
#包括
#包括
#包括
#包括
int main()
{
std::string myString=“Hi”;
std::vec;
//填充向量
for(std::bitset foo:myString)
vec.后置炮台(foo);
//打印vec内容
用于(自动常量和位:vec)
std::coutfoo(myString.c_str()[i])
不确定您试图对该行执行什么操作,但是位集
没有运算符()
@Borgleader我正在尝试将字符串转换为二进制。如果不使用right之类的东西,就无法创建动态位集?是否可以使用位集进行转换,然后添加到这样的向量?`vect.push_back(位集(myString.c_str()[I]))问题是您实际想要什么。您想要字符串的base-2表示为字符串吗?在这种情况下,请执行与代码片段1相同的操作,但将cout
替换为ostring位集或向量。我更喜欢将所有内容都保存在位集中“我想转换为基2,然后存储在动态分配的位集或向量中”-为什么?所有内容都已经是二进制的。听起来你好像误解了计算机中的存储是如何工作的。@KillzoneKid位集向量
for (std::size_t i = 0; i < myString.size(); ++i)
{
bitset<8>bar(myString.c_str()[i]);
foo[i] = bar[i];
}
for (auto c : myString) {...}
#include <iostream>
#include <string>
#include <vector>
#include <bitset>
int main()
{
std::string myString = "Hi";
std::vector<std::bitset<8>> vec;
// populate vector
for (std::bitset<8> foo : myString)
vec.emplace_back(foo);
// print vec content
for (auto const &bits : vec)
std::cout << bits << std::endl;
return 0;
}