如何避免空字符转换为 0?

How to avoiding nullchar converted to 0?

本文关键字:转换 字符 何避免      更新时间:2023-10-16

例如,我有一个填充{'1','0','0','0'}的字符数组,我在这个数组上应用atoi()它返回1000这是true,但是在我将数组元素重置为空字符''并用50重新填充数组并再次应用atoi()后,它不会输出50而是5000

char number[10]={};
num = atoi(number);
customer[i].balance = customer[i].balance + num;
cout<<"I added the deposit"<<endl;
cout<<customer[i].balance<<endl;
num = 0;
for (int r=0; r<strlen(number); r++)
{
number[r]='';
}

这里的问题是 for 循环中的条件。每次迭代后都会对该条件进行全面评估。这不仅意味着r<部分,还意味着strlen(number)部分。这通常是一个坏主意 -strlen必须检查整个刺痛才能找到第一个。在非常特殊的情况下,这可能是有意义的,但在这里它没有。您希望使用原始的、未修改的字符串长度。

如果你对字符串的理解更好一点,你可能会意识到你根本不需要r。您可以简单地将字符设置为,直到找到一个已经的字符。