C++ 从字符数组中检索整数
我正在工作的程序被传递了3个命令行参数,所有这些参数都应该是整数。提供的框架计划包括:C++ 从字符数组中检索整数,c++,C++,我正在工作的程序被传递了3个命令行参数,所有这些参数都应该是整数。提供的框架计划包括: int main(char *argv[]){ ... } 我所做的只是尝试在数组(0、1和2)的每个位置为项设置一个整数,但它不会编译,因为它试图将字符转换为整数。我确信有一个简单的解决方法,但我似乎无法解决它。因为这看起来像是家庭作业,我将给你一些提示: main()的签名包括一个int参数,通常命名为argc 初始参数是argv[1],而不是argv[0] 是将字符串转换为整数的最简单方法 既然这看
int main(char *argv[]){
...
}
我所做的只是尝试在数组(0、1和2)的每个位置为项设置一个整数,但它不会编译,因为它试图将字符转换为整数。我确信有一个简单的解决方法,但我似乎无法解决它。因为这看起来像是家庭作业,我将给你一些提示:
的签名包括一个main()
参数,通常命名为int
argc
- 初始参数是
,而不是argv[1]
argv[0]
- 是将字符串转换为整数的最简单方法
的签名包括一个main()
参数,通常命名为int
argc
- 初始参数是
,而不是argv[1]
argv[0]
- 是将字符串转换为整数的最简单方法
- 既然这看起来像是家庭作业,我就给你几个提示:
int i = atoi(argv[1]);
试着这样做:
int i = atoi(argv[1]);
请为每个参数尝试cstdlib函数“atoi”:
为每个参数尝试cstdlib函数“atoi”:
< /P>看看这个帖子:看看这个帖子:不会下注,但是是<代码> ATOI 真的是C++初学者的初衷吗?@ Cnututar如果我在C++中教初学者的课程,这是我在用字符串流等方式来处理高级I/O主题之前所提到的第一件事。<代码> ATOI 是标准C++库的其他功能中的一流公民,我认为值得一提。如果我知道C++,我就不会向初学者提及<代码> CSTDLIB < /Cuff>函数。而且
atoi
始终是二等公民(即使在C语言中),因为它不安全。@cnicutar我更喜欢“简单任务的简单工具”方法。我从一个char*
开始,有一个函数将cons char*
解释为十进制整数。我的问题解决了!现在,如果我开始使用<代码> STD::String ,我肯定会远离<代码> ATOI(S.CyString)():一旦你在C++的土地上,交叉回来不是一个好主意。@ Cnututar我相当肯定地说<代码> ATOI 是安全的,至少它的C++表兄弟:它不在大到-IntMax上溢出。“如果正确的值超出可表示值的范围,则返回INT_MAX或INT_MIN。“不会是下注,但是<代码> ATOI 真的是C++初学者的初衷吗?@ Cnututar如果我在C++中教初学者的课程,这是我在用字符串流等方式来处理高级I/O主题之前所提到的第一件事。<代码> ATOI 是标准C++库的其他功能中的一流公民,我认为值得一提。如果我知道C++,我就不会向初学者提及<代码> CSTDLIB < /Cuff>函数。而且atoi
始终是二等公民(即使在C语言中),因为它不安全。@cnicutar我更喜欢“简单任务的简单工具”方法。我从一个char*
开始,有一个函数将cons char*
解释为十进制整数。我的问题解决了!现在,如果我开始使用<代码> STD::String ,我肯定会远离<代码> ATOI(S.CyString)():一旦你在C++的土地上,交叉回来不是一个好主意。@ Cnututar我相当肯定地说<代码> ATOI 是安全的,至少它的C++表兄弟:它不在大到-IntMax上溢出。如果正确的值超出可表示值的范围,则返回INT_MAX或INT_MIN