从 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++ 中的字符串获取整数值的主要内容,如果未能解决你的问题,请参考以下文章

C++ 读取INI文件

从字符串中获取唯一的整数值

在 C++ 中将唯一字符串转换为唯一整数值

从 std::string 和 std::wstring 获取 char 整数值

如何从 NSRange 中提取整数值?

MySQL获取两个字符串之间的整数值