确切地说,我想写一个程序将IP地址转换为二进制格式,如202.117.1.20.So有没有一种方法可以使输入用点分隔,这样我就可以读取202作为int而不是字符串? 修改:为什么输入流按空格分隔,我可以将其更改为点,还是我喜欢的任何字符?
答案 0 :(得分:2)
显而易见的可能性如下:
unsigned o1, o2, o3, o4;
char dot1, dot2, dot3;
infile >> o1 >> dot1 >> o2 >> dot2 >> o3 >> dot3 >> o4;
assert(dot1=='.' && dot2=='.' && dot3=='.');
assert(o1 < 256 && o2 < 256 && o3 < 256 && o4 < 256);
如果你真的不想明确阅读.
个字符,你可以创建一个ctype facet,将.
分类为空格,然后使用该facet创建一个区域设置,并灌输使用该区域设置流。
如果您需要在输入中编写大量忽略.
的代码,这可能是值得的。我在another answer发布了这样一个方面。在这里您可以使用它,但请阅读int
s(或unsigned
等)而不是字符串。