问题描述
我可以在用户输入int值之前在c ++中添加二进制文字前缀。
#include <iostream>
using namespace std;
int main () {
int n1;
cin>>n1;
string s1 = to_string(n1);
string s2 = "0b";
string s=s2+s1;
int n=stoi(s);
cout<<n;
return 0;
}
我尝试了此操作,但失败了,因为stoi()仅读取0并跳过其余部分
解决方法
仍然无法直接从标准输入中读取二进制数。基数的任何自动检测均不支持"0b"
,因此当到达stoi()
时'b'
停止。
如果s
是从标准输入(也许是std::string
)读取的std::cin >> s;
,没有的"0b"
前缀,那么您可以使用
#include <cstdlib>
char* end;
long n = std::strtol(s.c_str(),&end,2/*radix of 2 denotes binary*/);
检查指针end
,以防s
中有无效的二进制数字。
请注意,我使用strtol
而不是stoi
作为int
的上限可以小到32767。