如何解决删除字符串中的零
这就是我一直在努力的事情:
将输入提供为2个正整数(最多100个数字)。
比较两个整数。
注意:2个整数可以包含前导零。 (这意味着您必须先删除零)
因为100位数字太长,所以我使用string
数据类型。
但是在下面的程序中,它仅返回'='
我对其进行了调试,发现for
循环无法正常工作。
我的代码:
#include <iostream>
#include <string>
using namespace std; // I know this is bad but it's just a small program
char compareBigInterger(string str1,string str2)
{
while (str1[0] != 0) str1.erase(0,1);
while (str2[0] != 0) str2.erase(0,1);
char answerHold {'='};
if (str1.size() > str2.size())
{
answerHold = '>';
}
else if (str1.size() < str2.size())
{
answerHold = '<';
}
else
{
for (int i = 0; i < str1.size(); i++)
{
if (int(str1[i] - 48) < int(str2[i] - 48)) // 48 = '1' - 1
{
answerHold = '<';
break;
}
else if (int(str1[i] - 48) > int(str2[i] - 48))
{
answerHold = '>';
break;
}
}
}
return answerHold;
}
int main()
{
string str1;
string str2;
cin >> str1 >> str2;
cout << char{compareBigInterger(str1,str2)};
}
解决方法
线条
while (str1[0] != 0) str1.erase(0,1);
while (str2[0] != 0) str2.erase(0,1);
将删除字符串中的所有字符,因为值0
被用作字符串的结束标记。
要与字符零进行比较,应使用字符文字'0'
(用''
包围的字符)。
此外,循环应为“字符为零时循环”以删除零。
while (str1[0] == '0') str1.erase(0,1);
while (str2[0] == '0') str2.erase(0,1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。