C++数组迭代

Bit*_*map 1 c++ eclipse-cdt

任何人都可以使用下面的C++代码找出没有任何内容打印到控制台上的原因;

string array[] = { "a", "b", "c", "d" };

int length = sizeof(array);
try
{
    for (int i = 0; i < length; i++)
    {
        if (array[i] != "") cout << array[i];
    }
}
catch (exception &e)
{
    e.what();
}
Run Code Online (Sandbox Code Playgroud)

Kar*_*ath 6

你使用错误的长度:

int length = sizeof(array)/sizeof(array[0])
Run Code Online (Sandbox Code Playgroud)

您在控制台上看不到任何内容的实际原因是因为输出是缓冲的,并且由于您没有写过换行符,因此它不会被刷新.与此同时,您的应用程序崩溃了.

  • @Steven在C++中超出界限是未定义的行为.不应该指望抛出异常. (4认同)