相关疑难解决方法(0)

如何将std :: string转换为int?

只是有一个简短的问题.我已经在互联网上看了很多,我找到了一些解决方案,但没有一个已经有效.看一下将字符串转换为int,我不是指ASCII码.

为了快速减少,我们将方程作为字符串传递.我们要将其分解,正确格式化并求解线性方程.现在,在说,我无法将字符串转换为int.

我知道字符串将采用格式(-5)或(25)等,所以它肯定是一个int.但是我们如何从字符串中提取它?

我想的一种方法是通过字符串运行for/while循环,检查一个数字,然后提取所有数字,然后查看是否有一个前导' - ',如果存在,则将int乘以 - 1.

虽然这个小问题看起来有点过于复杂.有任何想法吗?

c++ string int

438
推荐指数
10
解决办法
125万
查看次数

如何在C中将字符串转换为整数?

我试图找出是否有一种在C中将字符串转换为整数的替代方法.

我经常在我的代码中模式化以下内容.

char s[] = "45";

int num = atoi(s);
Run Code Online (Sandbox Code Playgroud)

那么,有更好的方式或其他方式吗?

c string atoi

238
推荐指数
6
解决办法
92万
查看次数

c ++从字符串解析int

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

我做了一些研究,有些人说使用atio而其他人说它很糟糕,我无论如何也无法让它工作.

所以我只想问一下,将字符串转换为int的正确方法是什么.

string s = "10";
int i = s....?
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ string int

78
推荐指数
5
解决办法
16万
查看次数

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

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

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

假设您希望字符串中包含实际数字(例如,"1","345","38944").

另外,让我们假设你没有提升,你真的想用C++方式来做,而不是狡猾的旧C方式.

c++ int parsing stdstring

46
推荐指数
2
解决办法
14万
查看次数

非常差的boost :: lexical_cast性能

Windows XP SP3.Core 2 Duo 2.0 GHz.我发现boost :: lexical_cast性能非常慢.想找出加速代码的方法.在visual c ++ 2008上使用/ O2优化并与java 1.6和python 2.6.2进行比较我看到以下结果.

整数铸造:

c++: 
std::string s ;
for(int i = 0; i < 10000000; ++i)
{
    s = boost::lexical_cast<string>(i);
}

java:
String s = new String();
for(int i = 0; i < 10000000; ++i)
{
    s = new Integer(i).toString();
}

python:
for i in xrange(1,10000000):
    s = str(i)
Run Code Online (Sandbox Code Playgroud)

我看到的时间是

c ++:6700毫秒

java:1178毫秒

python:6702毫秒

c ++和python一样慢,比java快6倍.

双铸:

c++:
std::string s ;
for(int i = 0; i < 10000000; …
Run Code Online (Sandbox Code Playgroud)

c++ boost lexical-cast

45
推荐指数
6
解决办法
3万
查看次数

std :: atoi()和std :: stoi有什么区别?

atoi和之间有什么区别stoi

我知道,

std::string my_string = "123456789";
Run Code Online (Sandbox Code Playgroud)

要将该字符串转换为整数,您必须执行以下操作:

const char* my_c_string = my_string.c_str(); 
int my_integer = atoi(my_c_string);
Run Code Online (Sandbox Code Playgroud)

C++ 11提供了简洁的替代品:

std::string my_string = "123456789"; 
int my_integer = std::stoi(my_string);
Run Code Online (Sandbox Code Playgroud)

1).这两者之间还有其他差异吗?

2).效率和性能明智哪一个更好?

3).哪个更安全?

atoi c++11

42
推荐指数
1
解决办法
4万
查看次数

如何在C++中将字符串转换为double?

如何在C++中将字符串转换为double?我想要一个函数,当字符串不是数字时返回0.

c++

34
推荐指数
6
解决办法
12万
查看次数

如何在知道变量之前声明变量?

我是cthon的新手来自python背景.

如果我想要用户输入然后我想检查输入的数据类型(例如整数或浮点数),我怎么可能声明我想要将用户输入分配给的变量?

c++

10
推荐指数
2
解决办法
3503
查看次数

在C++中强大的整数解析

我正在尝试编写一个辅助函数,可用于解析配置文件和基于文本的协议(由机器编写,而不是由人编写)的整数.我已经阅读了如何在C++中将字符串解析为int?但那里的解决方案并没有解决所有问题.我想要的东西(从大多数到最不重要):

  1. 拒绝超出范围的值.strtoul和strtoull并没有完全实现这一点:给定一个前导减号,该值在"返回类型"中被否定.因此,"-5"被愉快地解析并返回4294967291或18446744073709551611而不是发出错误信号.
  2. 在C语言环境中,无论全局语言环境设置如何(或者更好,请给我一个选择).除非有一种方法可以在每个线程的基础上设置全局语言环境,否则会排除strtoul,stoul和boost :: lexical_cast,并且只留下istringstream(其中一个可以填充语言环境).
  3. 要相当严格.它绝对不能接受拖尾垃圾,理想情况下我也想禁止空白区域.这立即使strtol和任何基于它的东西有点问题.似乎istringstream可以在这里使用noskipws和检查EOF,虽然这可能只是一个GCC错误.
  4. 理想情况下,可以控制是否应该假定基数为10或者应该从0或0x前缀推断.

关于解决方案的任何想法?是否有一种简单的方法来包装现有的解析机制以满足这些要求,或者它最终会减少自己编写解析器的工作量?

c++ parsing

6
推荐指数
1
解决办法
297
查看次数

在 C++ 中将字符串转换为数字

我在 C++ 中看到了很多将字符串转换为数字的选项。

其中一些实际上建议使用标准 C 函数,例如atoiatof

我还没有看到有人建议使用以下选项,该选项仅依赖于 C++ STL:

int Str2Num(const string& str) // can be called with a 'char*' argument as well
{
    int num;
    istringstream(str)>>num;
    return num;
}
Run Code Online (Sandbox Code Playgroud)

或者更一般地说:

template <typename type>
type Str2Num(const string& str) // can be called with a 'char*' argument as well
{
    type num;
    istringstream(str)>>num;
    return num;
}
Run Code Online (Sandbox Code Playgroud)

上述实现有哪些缺点?

有没有更简单/更干净的方法来实现这种转换?

c++ stl string-conversion

5
推荐指数
1
解决办法
5713
查看次数

标签 统计

c++ ×8

int ×3

string ×3

atoi ×2

parsing ×2

boost ×1

c ×1

c++11 ×1

lexical-cast ×1

stdstring ×1

stl ×1

string-conversion ×1