println()函数的替代方案及自定义打印函数实现方法咨询
println()函数的替代方案及自定义打印函数实现方法咨询
当然有啦!不管你用的是哪种编程语言,都有现成的替代方法,也完全可以自己写一个符合需求的打印函数,下面分情况给你唠唠:
一、现成的替代方案
- Python:除了
print()(对应Java的println()),你可以用sys.stdout.write(),它不会自动添加换行,要是需要换行得自己加\n,比如sys.stdout.write("Hello World\n");另外还有logging模块,适合更复杂的日志输出场景,能帮你区分日志级别、输出到文件等。 - Java:可以用
System.out.print()(不带自动换行),或者System.err.println()(输出到错误流,终端里通常显示为红色,适合输出报错信息);如果是在项目里,用SLF4J、Logback这类日志框架也是很好的替代,还能实现日志分级、持久化等功能。 - C/C++:用
printf(),需要手动添加换行符\n,比如printf("Hello World\n");;C++里还可以用cout,比如cout << "Hello World" << endl;(endl会刷新缓冲区并添加换行),或者cout << "Hello World\n";(只加换行,效率更高)。
二、自定义打印函数的实现
自定义打印函数非常灵活,完全可以根据你的需求来定制,比如加上时间戳、日志级别、自定义前缀后缀等等,下面给几个常见语言的实现例子:
Python 自定义打印函数
import datetime def my_print(content, level="INFO"): # 自动添加时间戳和日志级别 timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") print(f"[{timestamp}] [{level}] {content}") # 使用示例 my_print("这是自定义的打印内容") my_print("这是一条错误信息", level="ERROR")
Java 自定义打印函数
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class CustomPrinter { // 基础版:只打印内容加时间戳 public static void myPrint(String content) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String timestamp = LocalDateTime.now().format(formatter); System.out.printf("[%s] %s%n", timestamp, content); } // 进阶版:支持自定义日志级别 public static void myPrint(String content, String level) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String timestamp = LocalDateTime.now().format(formatter); System.out.printf("[%s] [%s] %s%n", timestamp, level, content); } public static void main(String[] args) { myPrint("自定义打印测试"); myPrint("出错啦!", "ERROR"); } }
C++ 自定义打印函数
#include <iostream> #include <ctime> #include <cstring> // 基础版打印 void myPrint(const std::string& content) { time_t now = time(0); char* timestamp = ctime(&now); // 去掉ctime自带的换行符 timestamp[strlen(timestamp)-1] = '\0'; std::cout << "[" << timestamp << "] " << content << std::endl; } // 进阶版:支持日志级别 void myPrint(const std::string& content, const std::string& level) { time_t now = time(0); char* timestamp = ctime(&now); timestamp[strlen(timestamp)-1] = '\0'; std::cout << "[" << timestamp << "] [" << level << "] " << content << std::endl; } int main() { myPrint("C++自定义打印测试"); myPrint("警告:内存不足", "WARNING"); return 0; }
备注:内容来源于stack exchange,提问作者noobC
相关产品推荐
相关产品推荐

