【问题标题】:C-equivalent of the 'setw' function'setw' 函数的 C 等效项
【发布时间】:2011-03-12 08:34:28
【问题描述】:

在c++中,setw函数用于设置字符的个数作为下一次插入操作的字段宽度。 C 中是否有任何函数,我的意思是,在标准 c 库中,它做同样的事情?

【问题讨论】:

  • 这可能是我第一次看到有人了解如何使用 iostream 格式化程序,而不是如何使用printf 做同样的事情......几乎总是相反。 :)
  • 是的,我总是遇到同样的事情。我在大学学习了 c++ 风格的 iostream 格式化程序,但我们在工作中使用 c-style。

标签: c


【解决方案1】:

printf ("%5d", 42);

将使用 5 个空格打印 42。阅读 printf 的手册页,了解字符填充、溢出和其他细微差别的工作原理。

编辑: 一些例子-

int x = 4000;
printf ("1234567890\n");
printf ("%05d\n", x);
printf ("%d\n", x);
printf ("%5d\n", x);
printf ("%2d\n", x);

给出输出

1234567890
04000
4000
 4000
4000

请注意,%2d 太小,无法处理传递给它的数字,但仍会打印整个值。

【讨论】:

  • 请注意,在填充数字前面放置- 将导致输出向左对齐。例如,printf("%-7s, "12345"); 将打印12345__,其中_ 是一个空格。这与printf("%7s, "12345"); 相反,后者将为您提供__12345Related Answer
  • 谢谢! @user12893298320392
【解决方案2】:

不,因为 C 中使用的流不会像流对象那样维护状态。

您需要指定例如printf() 使用合适的格式代码。

【讨论】:

  • 你能指定我该怎么做吗?我需要'setw(2)'的等效格式......
【解决方案3】:

另一种选择是将格式字符串定义为变量:

char print_format[] = "%5d"; printf(print_format, 42);

上面与C++setw类似,可以在打印前设置变量的内容。许多场合需要动态格式化输出。这是实现它的一种方法。

【讨论】:

    【解决方案4】:

    setw机械手: 此操纵器设置输出的最小字段宽度。语法是: setw(x) 这里setw 导致其后面的数字或字符串打印在x 字符宽的字段中,xsetw 操纵器中设置的参数。使用setw 操纵器时必须包含的头文件是 示例代码

     #include <iostream>
     using namespace std;
     #include <iomanip> 
      
     void main( )
     {
     int x1=12345,x2= 23456, x3=7892;
     cout << setw(8) << "Exforsys" << setw(20) << "Values" << endl
             << setw(8) << "E1234567" << setw(20)<< x1 << endl
             << setw(8) << "S1234567" << setw(20)<< x2 << endl
             << setw(8) << "A1234567" << setw(20)<< x3 << endl;
     } 
    

    【讨论】:

    • 这不是 c 等价物
    • 这不是一个有效的答案。不是 c 等价物。
    猜你喜欢
    • 2013-07-10
    • 2012-08-27
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2015-10-04
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多