`

第二章 控制台输入输出

阅读更多

          第二章   控制台输入输出

 

译自 《TangoRefMan_Sep_1_2008.odt


通常,在tango中有四种输出到控制台的方法:
1.C Print  (不推荐使用,仅用于运行时追踪问题)。
2.Cout/Cerr ,有最少的附属物并且结果是最少二进制代码,但不支持格式化输出,仅支持UTF-8.
3.Stdout/Stderr,标准的控制台格式化输出,Tango的Print。
4.Trace,Stderr的同步版本,同时输出几个不同线程的内容。

 

 

 

 

 Cout,Cerr


    通过Cout或Cerr在控制台显示文本,有最少的附属物,它们是tango.io.Console中预定义的实体,接受char[],把它们恰当地输出到设备中。如:


import tango.io.Console;
Cout("now is the time for all good men to come to the aid of their country").newline
;

 

    注意有一个newline修饰符附加在后。它的作用相当于传统用法的\n词法,在文本中嵌入行中断。控制台输出被缓冲,如果没有newline,文本将不能立即发送到目的地。如果使用输出行中断不合适,可以使用立即冲洗的方法:


Cout ("now is the time for all good men to come to the aid of their country").flush;


控制台方法支持如下形式的连锁引用:


char [] people = "women";
Cout ("now is the time for all good")(people)("to come to the aid of their country").newline;


    注意所有的参数是char[],并且用简单的从左到右的顺序发布,一个简单的flush标志是一个空参数。如:


Cout ("What is your name ?")();


    对象引用也能传送到cout :


auto o = new object;
Cout ("the name of Object is")(o).newline;


    Cout 允许使用潜在的流实例用法,如快捷的复制一个文本文件到控制台可以使用如下形式:


auto file= new File("myfile");
Cout.stream.copy(file);


    类似的,我们可以从一个网站复制原生内容到控制台(使用路径/index.html):


auto site = new SocketConduit;
site.connect(new InternetAddress("mywebsite")).write("GET/index.html HTTP/1.0\n\n");
cout.stream.copy(site);


    控制台输入使用相似的方法,使用预定义实体Cin,tango等候一些输入完成,然后把它们全部返回给调用者。交互用法,这是一个典型的输入行(延迟到CR銉被按下):


Cout("What  is your name?")();
auto name = Cin.get();
Cout ("Hello")(name).newline;

 

 


 Cin


    Cin是应用程序的输入流,这个流来自控制台用户的输入,通常是面向行的。即,操作系统通常等候用户按下Enter键然后传送整个一行内容给应用程序。如果应用程序想改变按下的键或改成其它特定的键组合,则应该使用C函数(导入tango.stdc).
Cin能加上readln读取一个输入行,返回一个内部缓冲器的一个切片,或加上copyln以返回一个复制品。


控制台异常


当操作系统底层确定一个错误发生时抛出一个IO异常。

 

Stdout, Stderr

另见我的博文《Stdout使用》

 

 Trace


当跟踪一个程序的运行时,我们常需要输出其运行状态。Stdout/Stderr/Cout/Cerr不适合做这件事,并且它们不是线程安全的,当需要从几个不同的线程一致地输出时使用Trace,以达到同步的目的。如:


import tango.util.log.Trace;
//……
int idx = someCalc();
Trace.formatln("{}@{}: my variale = {}",_FILE_,_LINE_,idx);
//.……
}


 C Print


和所有标准C函数一样,Printf是可用的,使用它要导入tango.io.stdio模块。


import tango.io.stdio;
Printf("at pos %lld,%.*s\n",_LINE_,_FILE_);

分享到:
评论

相关推荐

    疯狂java实战演义-第1章 控制台五子棋.doc

    - 通过实现控制台五子棋,可以深入理解Java基础,如数组、条件语句、循环以及输入输出。 - 掌握这些基础知识对于进一步学习面向对象编程、多线程和图形用户界面编程至关重要。 - 这个简单的项目也提供了一个实践...

    C#编程第二章课后习题的几个重点编程

    C#编程第二章课后习题的几个重点编程 本节习题主要涉及C#编程语言中的一些基础知识点,包括for循环、while循环、do-while循环、try-catch语句等。本节习题的主要目的是让学生熟悉C#语言的基础语法和编程逻辑。 一...

    Java程序设计与数据结构第二章习题答案

    9. **IO流**:虽然可能不是第二章的重点,但简单的输入输出操作对于读写文件或控制台交互是必要的。学习如何使用System.out.println()进行打印,以及Scanner类进行用户输入,将有助于完成习题。 10. **编程实践**:...

    java编程入门第八章输入与输出

    Java编程入门第八章主要涉及的是Java程序中的输入与输出(I/O)操作,这是任何编程语言中都必不可少的一部分。在Java中,输入与输出不仅包括从键盘读取数据或者向控制台打印信息,还包括文件操作、网络通信等多种...

    Matlab教学资料:第八章输入输出函数.doc

    Matlab 中的输入/输出函数 Matlab 是一种功能强大的编程语言,广泛应用于科学计算、数据分析和可视化等领域。在 Matlab 中,输入/输出函数是非常重要的一部分,用于处理各种类型的数据输入和输出。下面是 Matlab 中...

    C++PrimerPLus第六版中文版课后练习编程题答案第二章

    ### C++ Primer Plus 第六版第二章课后编程练习题解析 #### 题目背景 在《C++ Primer Plus》这本书的第二章中,作者介绍了C++的基础语法,包括变量声明、输入输出、基本的数据类型等。为了帮助读者更好地理解这些...

    C++大学教程输入输出流代码

    "C++大学教程输入输出流代码"这个主题聚焦于C++中的I/O流库,特别是针对第二版大学教程第17章的内容。这一章可能详细介绍了如何使用标准库中的`iostream`和`iomanip`来处理输入输出操作。 `iostream`库是C++标准库...

    java第七版课后答案——第二章.doc

    Java第七版课后答案——第二章 本节课后答案涵盖了Java编程语言的基础知识,包括变量、数据类型、运算符、控制结构、方法和输入/输出操作。本节答案中提供了两个Java程序的源代码,分别是AverageOfThree.java和...

    白痴都能看懂的Java教程(第二章:Eclipse的安装使用以及人生第一个Java项目实战)

    6. 在生成的类文件中,编写第一个Java程序的标准输出语句:`System.out.println("Hello, World!");`。 7. 运行程序,通过点击工具栏中的运行按钮或右键选择“Run As”,选择“Java Application”来运行程序。 8. ...

    C语言程序设计:第二章 C语言基础.ppt

    在C语言程序设计中,第二章主要探讨了C语言的基础,包括数据的表示方法、基本运算以及输入输出操作。这是程序设计的核心要素,因为程序本质上是处理数据并根据算法生成结果的过程。 首先,我们来详细了解一下C语言...

    Java大学基础教程(英文第六版)课后第二章自测题答案

    在本Java大学基础教程(英文第六版)课后第二章的自测题中,我们可以看到一系列练习题,涉及了基本的输入输出、算术运算、条件判断以及变量操作。下面将详细解析这些知识点: 1. **输出控制**: - `System.out....

    Let-Us-C:C语言

    第十二章 C预处理器 第十三章 数组 第十四章 多维数组 第十五章 弦乐 第十六章 处理多个字符串 第17章 结构体 第18章 控制台输入/输出 第19章 文件输入/输出 第20章 输入/输出中的更多问题 第21章 按位操作 第22章 ...

    java语言程序设计(基础篇)第二章程序练习题答案.docx

    ### Java语言程序设计(基础篇)第二章程序练习题答案解析 #### 2.1 将摄氏温度转化为华氏温度 **知识点:** - **基本语法**: 包括类的定义、方法的声明以及主函数`main`的格式。 - **数据类型**: 使用了`double`...

    c++primer第五版习题答案(第12章)

    2. 文件流操作:除了控制台输入输出外,I/O库还包括了用于文件操作的fstream类,比如ifstream用于文件输入,而ofstream用于文件输出。对文件进行读写操作是数据持久化存储的重要手段。 3. 流的状态和错误处理:在...

    C高级语言程序设计第二章PPT课件.pptx

    在C高级语言程序设计中,第二章主要涵盖了基础的语法元素和数据操作,包括词法记号、标识符、基本数据类型、变量和常量、运算符和表达式、基本输入输出以及字符串处理。以下是对这些概念的详细阐述: 1. **词法记号...

    c++程序设计第二版第三章答案

    本篇讨论的是C++程序设计的第二版第三章的相关内容,主要涉及数据类型、流操作以及上机实验。 首先,我们要理解C++中的基本数据类型。C++提供了多种基本类型,包括整型(char、bool、int、short int、long int)、...

    计算机图形学基础教程课后习题解答(第二章)

    在"第二章习题解答"文件中,应包含了对这些概念的进一步解释和具体编程实践,通过解答习题可以帮助读者巩固理论知识,提升实际编程技能。对于初学者来说,这是一个很好的学习资源,可以逐步理解并掌握计算机图形学的...

    C++大学基础教程第二章.ppt

    第二章主要涵盖了C++的基础概念,包括数据类型、变量、常量、运算符、表达式以及基本的输入输出操作。下面将对这些知识点进行详细解释。 首先,数据类型是程序处理数据的基础,它们决定了变量在内存中占用的空间...

    Java程序设计案例教程第二章.pdf

    2.7 控制台输入输出 在Java中,可以使用`System.out.println()`输出信息到控制台,而从控制台获取用户输入通常通过`Scanner`类完成。 示例程序展示了如何使用基本数据类型、变量、运算符和输出语句来计算圆的周长。...

    计算机专业,计算机图形学,计算机图形学基础(孔令德版)第二章课后习题与拓展

    孔令德版的《计算机图形学基础》是一本经典的教材,本章节我们将深入探讨其第二章涉及的知识点。 2.1 控制台程序:在学习计算机图形学之初,通常会从控制台程序入手,这是因为控制台提供了最基础的输入输出环境。在...

Global site tag (gtag.js) - Google Analytics