C++ 正在尝试将字符转换为整数
因此,我试图使用C++ 正在尝试将字符转换为整数,c++,C++,因此,我试图使用atoi()函数在下面的代码中生成char类型的变量date的和。但执行此操作时,它会返回以下错误消息:test.cpp:9:25:error:从'char'到'const char*'[-fppermissive]的转换无效,而且我似乎不知道问题出在哪里,非常感谢您的帮助 #include <iostream> using namespace std; int calcNumber(const char* date, const int arraySize)
atoi()
函数在下面的代码中生成char类型的变量date
的和。但执行此操作时,它会返回以下错误消息:test.cpp:9:25:error:从'char'到'const char*'[-fppermissive]
的转换无效,而且我似乎不知道问题出在哪里,非常感谢您的帮助
#include <iostream>
using namespace std;
int calcNumber(const char* date, const int arraySize)
{
int sum(0);
for (int count=0; count<arraySize; count++) {
sum += atoi(date[count]);
}
return sum;
}
int main()
{
char date[] = "131083";
cout << calcNumber(date, sizeof(date) / sizeof(date[0]));
}
#包括
使用名称空间std;
int-calcNumber(常量字符*日期,常量int数组化)
{
整数和(0);
for(int count=0;countdate[count]
是单个char
,可能是'3'
(即代码51,因此它与(char)51
)相同)
要将其转换为一个小数字(例如3),请使用date[count]-“0”
(当然,'0'
也是一个字符
常量文字,其值为48(ASCII格式);ASCII编码是指数字符号由连续代码编码)
顺便说一句,您希望在零字节上停止(终止每个字符串)
for (int count=0; date[count] != (char)0; count++) {
sum += atoi(date[count]);
}
然后,您甚至不需要传递任何数组化
实际上,您正在重新发明(很糟糕)(或)。您的calcNumber
会处理不正确的字符串,如“2X”
(但是std::atoi(“2X”)
给出了2,这更有意义)。而且您的calcNumber
在“-34”
或“1”上的行为也很糟糕
…函数需要一个常量字符*
类型。当使用[]取消引用常量字符*
类型的指针时
运算符您提供的是字符
类型。也就是说,您需要一个函数来确定字符数组的长度-1
,以处理\0
空终止字符和计数,只需使用atoi(日期);
而不是您的函数。@user0042抱歉,我可能用词有误……我正试图通过数字数组进行迭代,并将它们相加生成一个总和。请参见此处。要自己生成总和,请使用sum+=date[count]-“0”;
atoi
函数用于字符串,而不是字符。似乎不起作用,仍然会产生相同的错误。user0042 isak尝试sum+=atoi(日期[count]-“0”);
并将得到相同的错误。@isak,如果您想要一个位数的值,您所需要的就是sum+=date[count]“不”代码> Adoi < /COD>要求。谢谢@ USE2442,C++初学者,所以所有的帮助都是非常感谢的。但是你介意解释一下‘0’实际上是什么意思吗?因为当运行函数替换了<代码> += ATOI(日期[计数] -0′];< /C> > <代码>求和+ =日期[计数]-“0”;
它返回-32@isak这意味着您要减去字符编码的数字值(例如ASCII)对于'0'
,从当前字符中获取相应的整数。'0'
到'9'
的字符代码保证是后续的。@user4581301罪魁祸首似乎是计数感谢您解释问题所在,谢谢!回答得很好!非常感谢!可能只是我的编译器呃,但是编译时它会返回以下警告:tes.cpp:6:31:警告:有符号和无符号整数表达式之间的比较[-Wsign compare]
很抱歉,这里有很多问题,新手!
#include <iostream>
int calcNumber(const char* date, const size_t arraySize) {
int sum = 0;
for (int count = 0; count <= arraySize; count++) {
sum += date[count] - '0';
}
return sum;
}
int main() {
const char* p = "1234";
std::cout << calcNumber(p, strlen(p) - 1);
}