gpt4 book ai didi

c++ - strtol 的基础知识?

转载 作者:可可西里 更新时间:2023-11-01 18:40:44 27 4
gpt4 key购买 nike

我真的很困惑。我必须遗漏一些相当简单的东西,但我读到的关于 strtol() 的内容没有任何意义。有人可以用一种非常基本的方式为我阐明它,并举例说明我如何使类似以下的东西起作用吗?

string input = getUserInput;
int numberinput = strtol(input,?,?);

最佳答案

第一个参数是字符串。它必须作为 C 字符串传入,因此如果您有 std::string,请先使用 .c_str()

第二个参数是可选的,指定一个char * 来存储指向数字末尾字符的指针。这在转换包含多个整数的字符串时很有用,但如果您不需要它,只需将此参数设置为 NULL。

第三个参数是要转换的基数(基数)。 strtol可以执行从二进制(基数 2)到基数 36 的任何操作。如果您希望 strtol 根据前缀自动选择基数,请传入 0。

所以,最简单的用法是

long l = strtol(input.c_str(), NULL, 0);

如果你知道你得到的是十进制数:

long l = strtol(input.c_str(), NULL, 10);

strtol 如果字符串开头没有可转换字符,则返回 0。如果要检查 strtol 是否成功,请使用中间参数:

const char *s = input.c_str();
char *t;
long l = strtol(s, &t, 10);
if(s == t) {
/* strtol failed */
}

如果您使用的是 C++11,请使用 stol相反:

long l = stol(input);

或者,您可以只使用 stringstream,它的优点是能够像 cin 一样轻松读取许多项目:

stringstream ss(input);
long l;
ss >> l;

关于c++ - strtol 的基础知识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14794079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com