为什么在 c++ 中索引字符串会发出隐式转换警告?



我有两个相同长度的字符串,我需要查看它们是否是相同的字符串,我知道有一种内置的方法可以做到这一点,并且还有运算符重载来做到这一点,但我想这样做。这是通过检查并查看是否s1[i]==s2[2]但是当我这样做时,我会收到以下警告:

implicit conversion changes signedness: 'int' to 'std::basic_string<char,
std::char_traits<char>, std::allocator<char> >::size_type' (aka 'unsigned long long')

以下是我为收到此警告所做的工作:

for (auto i=0;i<word.size();i++)
{
if(alphabets[i]==word[i])
counter++;
}

auto i = 0产生i定义为int。 改用std::size_t i = 0将解决问题

字符串索引定义为定义为无符号的类型size_t。由于i属于有符号的int类型,因此必须进行隐式类型转换才能在有符号和无符号类型之间进行转换。编译器会警告这些情况,因为以这种方式转换负数时会出现错误。

相关内容

  • 没有找到相关文章

最新更新