【发布时间】:2013-06-19 02:42:11
【问题描述】:
使用stdio.h 时,我可以轻松读取某些类型的格式化输入,如下所示:
FILE* fin = fopen(...);
fscanf(fin, "x = %d, y = %d", &x, &y);
这样做的好处是我不必担心字符“x”和后面的“=”之间有多少空格,以及其他小细节。
在我看来,在 C++ 中,
ifstream fin(...);
string s;
fin >> s;
可能导致s 成为"x" 或"x=",甚至"x=12",具体取决于输入的间距。
有没有一种便捷的方法可以使用iostream/fstream 获得类似于scanf/fscanf 的行为?
【问题讨论】:
-
有趣!我也想知道:)
-
您可以使用带有忽略空格作为分隔符的构面的语言环境。
-
@0x499602D2:正常语言环境将空格视为分隔符。不将空格视为分隔符的语言环境在这里似乎没有帮助(至少对我而言)。 (显然)需要的是字母、逗号和等号被视为空白(除了正常的空白字符之外)。
-
@JerryCoffin 我相信你可以制作一个。为什么不创建它作为答案? :)