gpt4 book ai didi

c++ - 字符串(从 substr)转换为 unsigned int

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:57 25 4
gpt4 key购买 nike

我有一个字符串,它实际上包含一个数字和一个字符串,由 , 分隔,例如 "12,fooBar"

我想将它放入单独的变量中,即将数字放入 unsigned int myNum 中,将字符串放入 std::string myStr 中。

我有以下代码片段:

size_t pos1=value.find(',');
std::cout << value.substr(0, pos1) << " and "
<< (value.substr(0, pos1)).c_str() << std::endl;

这会产生 12 和 1。我在这里错过了什么吗?第二部分的 2 发生了什么?

注意:我将问题隔离到这段代码。我需要 c_str() 将其传递给 atoi 以获取 unsigend int。这里我不想打印第二部分。

更新:我实际上是从 levelDB Get 获取字符串。如果我像放在这里一样放一个测试字符串,它就可以工作。

最佳答案

发布的代码生成相同的子字符串:value.substr(0, pos1)。注意 std::string::substr()不修改对象,但返回一个新的 std::string

例子:

#include <iostream>
#include <string>

int main ()
{
std::string value ="12,fooBar";
unsigned int myNum;
std::string myStr;

const size_t pos1 = value.find(',');
if (std::string::npos != pos1)
{
myNum = atoi(value.substr(0, pos1).c_str());
myStr = value.substr(pos1 + 1);
}

std::cout << myNum << " and "
<< myStr << std::endl;

return 0;
}

输出:

12 and fooBar

编辑:

如果 unsigned int 是唯一需要的部分,那么以下将起作用:

unsigned int myNum = atoi(value.c_str());

as atoi() 将在第一个非数字字符处停止(不包括可选的前导 -+),在这种情况下

关于c++ - 字符串(从 substr)转换为 unsigned int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9500867/

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