1

有没有办法确定在java中打印到输出流的字符数?

例如,在 C 中, printf 返回在该特定语句中打印的字符数。

int i=printf("hello");
printf(i);

上面的代码会打印 hello 和 4;

有什么方法可以在 Java 中实现相同的功能吗?

4

5 回答 5

1

如果您真的需要这些信息,那么我建议您使用 Jakarta Commons CountingOutputStream。但是,如果您需要有关单个打印语句级别的此信息,我会感到惊讶,因此也许您可以描述您要解决的实际问题。

您永远不应该做的一件事是计算您编写的字符串中的字符数。当然,除非您可以保证字符串中的字符完全由输出流中的单个字节表示。现在,以及永远的未来,这样当有人开始给你带重音字符或西里尔字母的字符串时,你就不会遇到一个难以找到的错误。

于 2013-06-18T14:29:17.997 回答
1

您正在打印,因此您知道要显示的字符串。简单的是你得到字符串长度。

string str="Hello World!";
System.out.println(str);
System.out.println(str.length());
于 2013-06-18T13:50:29.293 回答
1

有图书馆可以提供帮助。Google Guava 有一个CountingOutputStream包装一个OutputStream并提供一个getCount()方法。这将返回写入的字节,因此取决于编码。请参阅@parsifal 的答案,了解您需要关心的原因。但是,它不提供PrintStream接口。Jakarta Commons IO 提供了一个类似的同名类。你可以这样做:

OutputStream os = ...;
CountingOutputStream cos = new CountingOutputStream(os);
PrintStream ps = new PrintStream(cos);
// write to ps.
ps.close();
long count = cos.getCount();
于 2013-06-18T14:30:00.540 回答
0

你可以做

String s= "hello";
System.out.println(s);
System.out.println(s.length());
于 2013-06-18T13:44:53.987 回答
0

我只是使用length()常规字符串库/API 中的函数。我不确定是否有另一种方法或更简单的方法。不过很想知道!

于 2013-06-18T13:47:03.823 回答