为什么for(int i = 0; i< THE_WORD.length(); ++ i)返回"'<'已签名/未签名的不匹配"?

时间:2015-01-30 15:51:55

标签: c++

以下是代码:

for (int i = 0; i < THE_WORD.length(); ++i)

我收到以下错误:'&lt;':签名/无符号不匹配

THE_WORD被初始化为:

const string THE_WORD;

我正在尝试制作一个“刽子手”程序(现在我自己学习cpp),这是for循环的一部分,它循环播放器应该猜测的单词,并从星号中改变字符到位到猜测的信。

如果我需要发布更多代码以便回答我的问题,请告诉我。

1 个答案:

答案 0 :(得分:6)

因为length()调用返回的类型是size_t,通常是typedef unsigned int。这就是为什么签名整数(intsize_t类型之间的签名/无符号不匹配,这是std::string::length()返回的值。

要使其正确,请考虑将i变量的类型更改为size_t或任何其他无符号类型,但最好使类型相同(size_t和{{1} }):

size_t