2014-02-14 33 views

回答

2

字符会自动格式化为%c。要打印整数为char(如果你真的想),你可以把它转换:

int x = 42; 
std::cout << (char) x; 

阅读工作方式类似(它的行为类似于cout,与其说是scanf)。无需格式:

char c; 
std::cin >> c; 

下面是一个回声例如:

char c; 
while(std::cin >> std::noskipws >> c) { 
    std::cout << c; 
} 

一个需要注意的有cin是,它是有状态的。如果您已在代码中使用cin,则可能需要使用std::cin.clear()

+0

重置错误状态位请使用一种数据类型,最好是字符。 – mcandre

+0

我试过在一个简单的'echo.c'程序中使用这个片段,但是1)空白被省略了,2)这个字符永远不会等同于'EOF',所以程序永远不会停止。 – mcandre

+1

@mcandre对不起,我不明白你的意思是“请使用一种数据类型,最好是字符”。关于空白的好处。有'noskipws'如果你不想忽略它。 '>>'操作符实际上会返回一个对自身的引用来支持操作链。 EOF使用'cin.eof()'进行测试。我添加了一个回声示例。 – user2079303

0

找不到任何格式化,但这个工程:

int c = 'x'; 

cout.put(c); 
1

如果你只是传递一个char到outstream,它会打印为一个char:

char a = 'a'; 
std::cout << a; 

- >

一个

如果你想输出intchar,你可以将它转换:

int i = 'i'; 
std::cout << static_cast<char>(i); 

- >

2

没有格式化,也有operator<<不同的重载。

char c = 'a'; 
cout << c; 
int i = 42; 
cout << i;