c ++输入分隔符可以从空格更改为点吗?

时间:2015-04-22 01:22:33

标签: c++ cin

确切地说,我想写一个程序将IP地址转换为二进制格式,如202.117.1.20.So有没有一种方法可以使输入用点分隔,这样我就可以读取202作为int而不是字符串? 修改:为什么输入流按空格分隔,我可以将其更改为点,还是我喜欢的任何字符?

1 个答案:

答案 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等)而不是字符串。