我正在尝试使用cout
打印从名为charArray
的动态分配的二维字符数组中获取的c字符串。以下是我打印的代码片段:
for(int k=0; k<intSize; k++)
{
std::cout<<"hello"<<std::endl;
std::cout<<charArray[intSize-1-k]<<std::endl;
}
for(int i = 0; i<intSize; i++)
{
delete [] charArray[i];
std::cout<<i<<std::endl;
}
delete [] charArray;
intSize
是 charArray
中有多少个 C 字符串。但是当我运行程序时,只打印了一次 "hello"
,没有打印出其他任何内容,包括第二个 for 循环中的 charArray
和 i。我已经在代码的早期确认过 charArray
已经被正确填充,通过使用 cout
成功输出。我运行了 gdb 来查找问题,在 gdb 中 for 循环完全迭代,所以由于某种原因,在第一个 cout
后,couts 就停止工作了。我还尝试在每个 cout
后刷新,但仍然是同样的情况。
intSize
的值为1,或者是你的程序在访问charArray[intSize-1-k]
时出现了错误。请重现并在[mcve]中发布您的问题。 - Scheff's Catstd::endl
会刷新输出,因此添加显式刷新(如您所见)不会改变结果。但是在这里刷新并不是问题;一个简单的'\n'
也可以工作,而不需要过多地刷新。 - Pete Beckerstd::cout
处于错误状态(例如,您可以检查这个问题,如if (!std::cout.good()) std::cerr << "Oops!\n";
)。 - Scheff's Catstd::cout
始终正常或std::cerr
无法正常工作。) - Scheff's Cat