什么是`cout`的格式化输出的范围

时间:2015-10-17 16:16:42

标签: c++

在我的程序中,将有两行输出:第一行中的数字是小于1000的整数;第二行中的数字是0到10之间的浮点数。我想要的输出格式如下:

right format

这是我尝试的方法(所有输出都是最后四行): case 1 - 5

  1. 无格式输出;在图片中我们可以看到应该打印的数字
  2. 第1行没有格式,第2行没有格式 第1行中的数字;只有第一个是正确的,而大于100的数字是科学记数法
  3. 两行格式 就像案例2一样,$timeout似乎只能工作一次才能将43更改为043,然后它将不再起作用
  4. 添加了<<setw(3)<<setfill('0')。如果我单独打印noshowpoint,它始终打印*(p + 2)有或没有格式。但是,如果我在118循环中打印*(p + 2),则除第一个输出外,输出仍为for。但是,如果我直接打印数字1.2e+002,则输出正确。
  5. 那么,我的代码的哪一部分是错的?以正确的格式输出答案的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

实际上,并非所有IO格式化操作符都是持久性。其中一些,如std::setw只对下一个操作生效,然后它们就会过期。什么都没有&#34;错误&#34;用你的代码;你只需要再次使用操纵器。请参阅您最喜欢的C ++标准库文档,以检查您使用的每个操纵器的持久性。

答案 1 :(得分:1)

嗯,对于第三个,你设置X <- seq(from=1, 10, by=1) Y <- seq(from=1, 20, by=2) df1 <- data.frame(X, Y) df1 save(object=df1, file = "mdf.RData") load(file = "mdf.RData") mdf Error: object 'mdf' not found load(file = "mdf.RData", .GlobalEnv) mdf Error: object 'mdf' not found 但从未使用showpoint取消设置,因此下一行问题。

noshowpoint

给出所需的输出。

请注意为流设置#include <iostream> #include <iomanip> using namespace std; int main() { double x[4]= {43.0,118.0,9.0,5.0}; double y[4] = {9.5, 9.0, 8.5, 8.0}; // your code goes here for (int i=0; i< 4; i++) { cout<<noshowpoint<<setprecision(3)<<setw(3)<<setfill('0')<<(x[i]) <<" "; cout<<showpoint<<setprecision(2)<<y[i] << endl; } return 0; } showpoint操纵器,而不是单输出。