【发布时间】:2013-03-11 17:30:05
【问题描述】:
我正在尝试检查输入的有效性。我得到一个文件,其中有两列,第一列是字符串,第二列是整数。分隔符是任意数量的空格。问题是,我无法弄清楚如何正确检查第二项是否真的是 int。考虑这段代码:
string line; // parameter with a string to be parsed
string name;
int num;
istringstream lineStream(line);
lineStream >> name;
lineStream >> num;
通过调用lineStream.good(),我可以检测到诸如“abcd g”之类的输入,但是当我输入“abcd 12a”之类的内容时,它会被解析为“abcd”和12。与“abcd 12.2”等相同。
在 Java 中,我可以将 String.split() 用于数组,然后解析每个整个元素,而不忽略任何字符,但我不知道这里的正确方法是什么。
感谢提示
【问题讨论】:
-
假设您的拆分是基于空格到字符串中,您可以在 C++ 中实现相同的“拆分”策略,然后验证各个实体,但最终问题是公平的。您似乎在问如何验证被提取的 element 实际上是完整和简洁的,也许是如何通过流属性收集该信息。好问题。我会对解决此问题的不同方法感兴趣。
-
我想知道是否有办法简单地做到这一点,即使用流。创建一个 char* 数组可能会很麻烦,然后对它们进行标记并检查有效性,这是真的。