从 C++ 中的字符串获取整数值
Posted
技术标签:
【中文标题】从 C++ 中的字符串获取整数值【英文标题】:Getting an integer value from string in c++ 【发布时间】:2014-07-24 14:54:06 【问题描述】:我正在尝试学习 c++,但我遇到了一个问题。我试图从用户在一行上输入的字符串中获取整数值。
例如)用户输入:“将值更改为 15。”
从该字符串中获取 15 的最佳方法是什么?我环顾了一段时间,但只能找到一个字符串是否只是整数。
提前致谢!
【问题讨论】:
这个字符串有特定的格式吗?如果你不知道整数在哪里,那就更难了 您可以在this Q&A查看答案。 ***.com/a/7664227/3232207 是个好方法。 是的,字符串末尾总是有整数。另一个例子,用户输入:“Set read 55”。 始终可以使用string::substr
将值作为子串。
【参考方案1】:
为什么不混合使用 getline(获取整行)和字符串流(标记输入)并将它们全部放在一个向量中(比数组更容易使用),在 .size()-1 处获取一个并为此做一个atoi。可能是矫枉过正,但字符串流可以做你想做的事。对于一个小小的 tut,这可能会有所帮助 http://www.dreamincode.net/forums/topic/95826-stringstream-tutorial/
【讨论】:
谢谢!我会试试看。【参考方案2】:这可能不是最好的方法,但现在要完成某些事情,您可以使用 strtok 对输入字符串进行标记,然后检查整数值整数的标记。这里的答案之一 [link] 建议使用 strtok 来标记字符串。
如果您知道字符串的格式或知道总会有一个整数值,那么您可以使用 string::find_first_of 和 string::find_last_of [link] 然后获取子字符串并使用字符串: :stoi。
【讨论】:
提及strtok()
可能是你能给出的最糟糕的建议。
@πάνταῥεῖ 我没有说要在生产代码中使用它。我说现在他可以处理他的代码,然后当他发现他的修复回来并进行更改时。如果他知道他输入的格式,我还提供了替代解决方案。
“我没有说要在生产代码中使用它。” 不,这并没有让它变得更好,你根本不应该提到这个。那没用! (还有have a look here 或在许多其他问答中,提到并解释了为什么不鼓励这样做)。以上是关于从 C++ 中的字符串获取整数值的主要内容,如果未能解决你的问题,请参考以下文章