# std::left, std::right, std::internal

< cpp‎ | io‎ | manip

定义于头文件 `<ios>` |  |
std::ios_base& left( std::ios_base& str ); | (1) |
std::ios_base& right( std::ios_base& str ); | (2) |
std::ios_base& internal( std::ios_base& str ); | (3) |

修改填充字符的默认定位。 `left` 与 `right` 应用到任何输出，而 `internal` 应用到整数、浮点和货币输出。在输入时无效果。

1) 如同用调用 str.setf(std::ios_base::left, std::ios_base::adjustfield) ，设置流 `str` 的 `adjustfield` 为 `left`

2) 如同用调用 str.setf(std::ios_base::right, std::ios_base::adjustfield) ，设置流 `str` 的 `adjustfield` 为 `right`

3) 如同用调用 str.setf(std::ios_base::internal, std::ios_base::adjustfield) ，设置流 `str` 的 `adjustfield` 为 `internal`

这是一个 I/O 操纵符，可用如 out << std::left 的表达式对任何 std::basic_ostream 类型的 `out` 或用如 in >> std::left 的表达式对任何 std::basic_istream 类型的 `in` 调用。

### 参数

str | - | 到 I/O 流的引用

### 返回值

`str` （到操纵后的流的引用）

### 示例

    #include <iostream>
    #include <iomanip>
    #include <locale>

    int main()
    {
        std::cout.imbue(std::locale("en_US.utf8"));
        std::cout << "Left fill:\n" << std::left << std::setfill('*')
                  << std::setw(12) << -1.23  << '\n'
                  << std::setw(12) << std::hex << std::showbase << 42 << '\n'
                  << std::setw(12) << std::put_money(123, true) << "\n\n";

        std::cout << "Internal fill:\n" << std::internal
                  << std::setw(12) << -1.23  << '\n'
                  << std::setw(12) << 42 << '\n'
                  << std::setw(12) << std::put_money(123, true) << "\n\n";

        std::cout << "Right fill:\n" << std::right
                  << std::setw(12) << -1.23  << '\n'
                  << std::setw(12) << 42 << '\n'
                  << std::setw(12) << std::put_money(123, true) << '\n';
    }

输出：

    Left fill:
    -1.23*******
    0x2a********
    USD *1.23***

    Internal fill:
    -*******1.23
    0x********2a
    USD ****1.23

    Right fill:
    *******-1.23
    ********0x2a
    ***USD *1.23

### 参阅

setw | 更改下个输入/输出域的宽度 (函数)
setfill | 更改填充字符 (函数模板)