gpt4 book ai didi

android - printf、logcat 和\n

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:08 24 4
gpt4 key购买 nike

我有 C 代码,它使用 prints 和一些聪明的东西,比如

printf("hello ");
// do something
printf(" world!\n");

哪些输出

hello world!

我想在 Android 和 iOS 中重用该代码,但是 Log.d() 和 NSLog() 在我传递给它们的每个字符串的末尾有效地添加了一个换行符,因此这段代码的输出:

NSLog(@"hello ");
// do something
NSLog(@"world!\n");

出来(或多或少)为:

hello

world!

我愿意用一些宏替换 printf 来让 Log.d 和 NSLog 模拟 printf 对 '\n' 的处理;有什么建议吗?

最佳答案

一个可行的解决方案是定义一个全局日志函数,该函数在找到换行符之前不会刷新其缓冲区。

这是一个(非常)简单的 java 版本,适用于 android:

import java.lang.StringBuilder;

class CustomLogger {
private static final StringBuilder buffer = new StringBuilder();

public static void log(String message) {
buffer.append(message);

if(message.indexOf('\n') != -1) {
Log.d('SomeTag', buffer);
buffer.setLength(0);
}
}
}

...
CustomLogger.log("Hello, ");
// Stuff
CustomLogger.log("world!\n"); // Now the message gets logged

它完全未经测试,但你明白了。
这个特定的脚本有一些性能问题。例如,最好检查最后一个字符是否是换行符。


我刚刚意识到你想要在 C 中使用它。虽然标准库不会造成伤害(以获得字符串缓冲区之类的东西),但移植应该不会太难。

关于android - printf、logcat 和\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com