如何将CArrayDouble类型数组连续打印而非逐行输出?
解决CArrayDouble数组逐行输出改为单行的问题
你遇到的这个情况很常见——普通数组靠ArrayPrint()能直接一行输出所有元素,但用CArrayDouble时,循环里的PrintFormat()每次调用都会自动换行,自然就变成了逐行显示。下面给你两种实用的解决方法:
方法1:拼接成字符串后一次性打印
先把所有元素拼接成带空格分隔的字符串,最后用Print()输出整个字符串,就能实现单行效果:
CArrayDouble KArray; // 假设这里已完成数组数据填充 string outputStr = ""; for(int i = 0; i < KArray.Total(); i++){ // 格式化每个元素并拼接到字符串,用空格分隔 outputStr += StringFormat("%.5f ", KArray[i]); } // 可选:去掉字符串末尾多余的空格 if(StringLen(outputStr) > 0) outputStr = StringSubstr(outputStr, 0, StringLen(outputStr)-1); Print(outputStr);
方法2:自定义适配CArrayDouble的打印函数
可以自己写一个类似ArrayPrint()的工具函数,后续复用起来更方便:
void PrintCArray(const CArrayDouble &targetArr){ string outputStr = ""; for(int i = 0; i < targetArr.Total(); i++){ outputStr += StringFormat("%.5f ", targetArr[i]); } if(StringLen(outputStr) > 0) outputStr = StringSubstr(outputStr, 0, StringLen(outputStr)-1); Print(outputStr); } // 使用示例 CArrayDouble KArray; // 填充数据后直接调用 PrintCArray(KArray);
为什么原方法会逐行输出?
核心原因是PrintFormat()(包括Print())每次调用都会在输出内容末尾自动添加换行符,循环里每执行一次就会换一行。而系统自带的ArrayPrint()内部是先把所有元素拼接成一行完整字符串,再一次性输出,所以不会出现逐行的情况。
内容的提问来源于stack exchange,提问作者Jaffer Wilson
相关产品推荐
相关产品推荐

