为什么for(int i = 0; i <THE_WORD.length(); ++ i)返回"'<'signed/unsigned mismatch"?

qLu*_*qLu 0 c++

这是代码:

for (int i = 0; i < THE_WORD.length(); ++i)
Run Code Online (Sandbox Code Playgroud)

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

THE_WORD初始化如下:

const string THE_WORD;
Run Code Online (Sandbox Code Playgroud)

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

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

Vic*_*voy 6

因为返回的类型length()呼叫的size_t这通常是typedefunsigned int.这就是为什么它是有符号整数之间的有符号/无符号不匹配,它是intsize_t返回的值的类型std::string::length().

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

for (size_t i = 0; i < THE_WORD.length(); ++i)
Run Code Online (Sandbox Code Playgroud)