虽然不影响,但是看到警告很难受:(
for (int i = 0; i < num.length();i++) {
if (i != 0) cout << " ";
cout << str[num[i] - '0'];
}
原因:无法比较有符号(signed)整数和无符号(unsigned)整数。int是有符号数,length()返回的是 无符号整数。
解决方案
- 强制转换类型 或者将 i 声明为unsigned 类型的int
for (int i = 0; i < (int)num.length();i++) {
if (i != 0) cout << " ";
cout << str[num[i] - '0'];
}
- 将 i 声明为size_t类型,需要导包 #include < cstddef >
for (size_t i = 0; i < num.length();i++) {
if (i != 0) cout << " ";
cout << str[num[i] - '0'];
}
int 和 size_t 区别具体参考:size_t和int区别