Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用for循环在没有32位和64位警告的情况下反向迭代容器/字符串的元素_C++_32bit 64bit - Fatal编程技术网

C++ 使用for循环在没有32位和64位警告的情况下反向迭代容器/字符串的元素

C++ 使用for循环在没有32位和64位警告的情况下反向迭代容器/字符串的元素,c++,32bit-64bit,C++,32bit 64bit,我只想对容器或字符串进行反向迭代 此示例代码 for (int i = strlen (str) - 1; i >= 0; i--) { ... } 将在64位编译时发出警告: warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data 另一方面, for (size_t i = strlen (str) - 1; i >= 0; i--) { .

我只想对容器或字符串进行反向迭代

此示例代码

for (int i = strlen (str) - 1; i >= 0; i--)
{
    ...
}
将在64位编译时发出警告:

warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
另一方面,

for (size_t i = strlen (str) - 1; i >= 0; i--)
{
    ...
}
将导致无限循环,因为大小\u t是无符号的

我知道我可以使用其他技术,但我只想使用一个简单的for循环

如何为32位和64位编译编写干净的代码?

更改为:

for (size_t i = strlen (str); i--; )
{
    ...
}

有意思的是,我不知道这是32和64位的区别之一,我叫迂腐,但没有办法在C++中得到“干净代码”,而使用C字符串。如果你想写干净的C代码,那么不要假装它是C++。如果你想写干净的C++代码,那么不要假装是C.@ Jalf:你是对的。这只是一个简单的例子或是对某些东西的迭代。