只是有一个简短的问题.我已经在互联网上看了很多,我找到了一些解决方案,但没有一个已经有效.看一下将字符串转换为int,我不是指ASCII码.
为了快速减少,我们将方程作为字符串传递.我们要将其分解,正确格式化并求解线性方程.现在,在说,我无法将字符串转换为int.
我知道字符串将采用格式(-5)或(25)等,所以它肯定是一个int.但是我们如何从字符串中提取它?
我想的一种方法是通过字符串运行for/while循环,检查一个数字,然后提取所有数字,然后查看是否有一个前导' - ',如果存在,则将int乘以 - 1.
虽然这个小问题看起来有点过于复杂.有任何想法吗?
我试图找出是否有一种在C中将字符串转换为整数的替代方法.
我经常在我的代码中模式化以下内容.
char s[] = "45";
int num = atoi(s);
Run Code Online (Sandbox Code Playgroud)
那么,有更好的方式或其他方式吗?
可能重复:
如何在C++中将字符串解析为int?
我做了一些研究,有些人说使用atio而其他人说它很糟糕,我无论如何也无法让它工作.
所以我只想问一下,将字符串转换为int的正确方法是什么.
string s = "10";
int i = s....?
Run Code Online (Sandbox Code Playgroud)
谢谢!
可能重复:
如何在C++中将字符串解析为int?
如何将C++字符串转换为int?
假设您希望字符串中包含实际数字(例如,"1","345","38944").
另外,让我们假设你没有提升,你真的想用C++方式来做,而不是狡猾的旧C方式.
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) 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).哪个更安全?
我是cthon的新手来自python背景.
如果我想要用户输入然后我想检查输入的数据类型(例如整数或浮点数),我怎么可能声明我想要将用户输入分配给的变量?
我正在尝试编写一个辅助函数,可用于解析配置文件和基于文本的协议(由机器编写,而不是由人编写)的整数.我已经阅读了如何在C++中将字符串解析为int?但那里的解决方案并没有解决所有问题.我想要的东西(从大多数到最不重要):
关于解决方案的任何想法?是否有一种简单的方法来包装现有的解析机制以满足这些要求,或者它最终会减少自己编写解析器的工作量?
我在 C++ 中看到了很多将字符串转换为数字的选项。
其中一些实际上建议使用标准 C 函数,例如atoi和atof。
我还没有看到有人建议使用以下选项,该选项仅依赖于 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)
上述实现有哪些缺点?
有没有更简单/更干净的方法来实现这种转换?