Char to Int in C++?
Char to Int in C++?
可能重复:
如何将单个字符转换为int
嗯,我正在做一个基本程序,它处理一些输入,比如:
2+2
所以,我需要加上2+2。
我做了一些类似的事情:
string mys "2+2";
fir = mys[0];
sec = mys[2];
但现在我想把"fir"加成"sec",所以我需要把它们转换成Int。我试过"int(fir(",但没有成功。
有多种方法可以将字符串转换为int。
解决方案1:使用遗留C功能
int main()
{
//char hello[5];
//hello = "12345"; --->This wont compile
char hello[] = "12345";
Printf("My number is: %d", atoi(hello));
return 0;
}
解决方案2:使用lexical_cast
(最合适和最简单(
int x = boost::lexical_cast<int>("12345");
解决方案3:使用C++ Streams
std::string hello("123");
std::stringstream str(hello);
int x;
str >> x;
if (!str)
{
// The conversion failed.
}
好吧,首先回顾一下为什么你的尝试没有奏效。在您的示例中,fir被声明为字符串。当您尝试执行与(int(fir相同的int(fir(时,您尝试了从字符串到整数的c样式强制转换。从本质上讲,你会得到垃圾,因为c++中的c样式转换将运行所有可用的转换,并采用第一个有效的转换。最多你会得到代表字符2的内存值,这取决于你使用的字符编码(UTF-8、ascii等(。例如,如果fir包含"2",那么你可能会得到0x32作为整数值(假设ascii(。你真的不应该使用c风格的强制转换,使用它们真正安全的地方只有数字类型之间的转换。
如果给定的字符串与示例中的字符串类似,那么首先应该使用strtok之类的函数将字符串分离为相关的字符序列(标记(。在这个简单的例子中,它是"2"、"+"answers"2"。完成后,您可以简单地对要转换为整数的字符串调用atoi等函数。
示例:
string str = "2";
int i = atoi(str.c_str()); //value of 2
然而,如果您想同时处理非整数,这将变得稍微复杂一些。在这种情况下,最好在操作数(+-/*等(上进行分离,然后在数字字符串上查找小数点。如果你找到了一个,你可以把它当作一个double,并使用函数atof而不是atoi,如果你没有,就坚持使用atoi。
您尝试过atoi或boost词法转换吗?
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- std::async from std::async in windows xp