我必须以 10101110000 的形式输入一个输入,如果我以字符串的形式接受它,那么如果我想对该字符串进行逻辑操作,如 OR AND NOT异或,我该怎么办?任何建议都表示赞赏...我很抱歉,如果它是一个简单的,因为我是c ++的新手..感谢提前!!
int main() {
int ns,nt;
cin >> ns >> nt; //no: of students,no: of topics
vector<string> st;
for(int i=0;i<ns;i++) //taking binary strings as input
{
string s;
cin >> s;
st.push_back(s);
}
string a = st[0] | st[1];
cout << a;
return 0;
}
此方法不起作用:( :(
答案 0 :(得分:0)
如果要进行按位操作,并且确定要处理的位数不超过32位(假设系统为32位或更多),则可以使用strtoul
将字符串转换为无符号字符串长。因为按位和,或者xor在整数类型上是自然。代码可能变成:
int main() {
int ns,nt;
cin >> ns >> nt; //no: of students,no: of topics
vector<unsigned long> st;
for(int i=0;i<ns;i++) //taking binary strings as input
{
unsigned long val;
char *ix;
string s;
cin >> s;
if (!cin) { // control stream state (end of file...)
cerr << "Input error" << endl;
return 1;
}
val = ::strtoul(s.c_str(), &ix, 2); // convert from binary to integral
if (*ix != '\0') { // control input validity
cerr << "Wrong value >" << s << "<" << endl;
i -= 1;
}
else st.push_back(val);
}
unsigned long a = st[0] | st[1];
cout << a;
return 0;
}