如何转换 C++ 字符串转int?

发布于 2024-07-06 20:21:46 字数 426 浏览 7 评论 0原文

可能的重复:
如何在 C++ 中将字符串解析为 int?< /a>

如何将 C++ 字符串转换为 int?

假设您希望字符串中包含实际数字(例如“1”、“345”、“38944”)。

另外,假设您没有 boost,并且您确实想以 C++ 方式进行操作,而不是使用粗俗的旧 C 方式。

Possible Duplicate:
How to parse a string to an int in C++?

How do you convert a C++ string to an int?

Assume you are expecting the string to have actual numbers in it ("1", "345", "38944", for example).

Also, let's assume you don't have boost, and you really want to do it the C++ way, not the crufty old C way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

肩上的翅膀 2024-07-13 20:21:46
#include <sstream>

// st is input string
int result;
stringstream(st) >> result;
#include <sstream>

// st is input string
int result;
stringstream(st) >> result;
无力看清 2024-07-13 20:21:46

使用 C++ 流。

std::string       plop("123");
std::stringstream str(plop);
int x;

str >> x;

/* Lets not forget to error checking */
if (!str)
{
     // The conversion failed.
     // Need to do something here.
     // Maybe throw an exception
}

附言。 这个基本原则就是 boost 库 lexical_cast 的工作原理。

我最喜欢的方法是 boost lexical_cast<>

#include <boost/lexical_cast.hpp>

int x = boost::lexical_cast<int>("123");

它提供了一种在字符串和数字格式之间相互转换的方法。 它下面使用字符串流,因此任何内容都可以编组到流中,然后从流中取消编组(看看 >> 和 << 运算符)。

Use the C++ streams.

std::string       plop("123");
std::stringstream str(plop);
int x;

str >> x;

/* Lets not forget to error checking */
if (!str)
{
     // The conversion failed.
     // Need to do something here.
     // Maybe throw an exception
}

PS. This basic principle is how the boost library lexical_cast<> works.

My favorite method is the boost lexical_cast<>

#include <boost/lexical_cast.hpp>

int x = boost::lexical_cast<int>("123");

It provides a method to convert between a string and number formats and back again. Underneath it uses a string stream so anything that can be marshaled into a stream and then un-marshaled from a stream (Take a look at the >> and << operators).

明明#如月 2024-07-13 20:21:46

我之前在 C++ 代码中使用过类似以下内容:

#include <sstream>
int main()
{
    char* str = "1234";
    std::stringstream s_str( str );
    int i;
    s_str >> i;
}

I have used something like the following in C++ code before:

#include <sstream>
int main()
{
    char* str = "1234";
    std::stringstream s_str( str );
    int i;
    s_str >> i;
}
坏尐絯℡ 2024-07-13 20:21:46

C++ FAQ Lite

[39.2] 如何将 std::string 转换为数字?

https://isocpp.org/wiki/faq/杂项技术问题#convert-string-to-num

C++ FAQ Lite

[39.2] How do I convert a std::string to a number?

https://isocpp.org/wiki/faq/misc-technical-issues#convert-string-to-num

桃扇骨 2024-07-13 20:21:46

让我为 boost::lexical_cast 投上一票,

#include <boost/lexical_cast.hpp>

int val = boost::lexical_cast<int>(strval) ;

它会在错误时抛出 bad_lexical_cast

Let me add my vote for boost::lexical_cast

#include <boost/lexical_cast.hpp>

int val = boost::lexical_cast<int>(strval) ;

It throws bad_lexical_cast on error.

宛菡 2024-07-13 20:21:46

使用 atoi

Use atoi

云胡 2024-07-13 20:21:46

也许我误解了这个问题,为什么您不想想要使用atoi? 我认为重新发明轮子没有意义。

我是不是错过了重点?

Perhaps I am misunderstanding the question, by why exactly would you not want to use atoi? I see no point in reinventing the wheel.

Am I just missing the point here?

白日梦 2024-07-13 20:21:46

在“stdapi.h”中

StrToInt

这个函数告诉你结果,以及有多少字符参与了转换。

in "stdapi.h"

StrToInt

This function tells you the result, and how many characters participated in the conversion.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文