AI 摘要

在C++学习中,函数的输入和输出可以通过使用移位操作符进行。例如,对于整数类型的变量x,可以使用`cin >> x`来实现输入。这种操作可以被看作是一个函数,其中第一个参数是`cin`类,第二个参数是`int`类。而针对字符类型的变量x同样也可以被视为函数,这里涉及到了运算符重载以适应不同的数据类型。 另外,格式控制方面,通过设置位掩码类型(比如`std::ios_base::showpos`),可以控制输出格式。例如,在输出字符‘0’时,通过`std::cout.setf(std::ios_base::showpos)`来显示符号位。同样,通过`std::cout.width(10)`可以设置输出宽度,而`std::cout.fill('.')`可以设置填充字符。这些操作对于控制输出结果非常有帮助。cin输入后会重置width为0,补充的另一种写法通过`std::setw(10)`、`std::setfill('.')`等函数实现相同的效果。 在文件和内存操作方面,了解文件操作的一些基本要点也很重要。比如,在文件处于打开状态时无法再次打开,而使用fstream、ifstream、ofstream可以进行文件操作。而`is_open()`、`open()`、`close()`等函数可以用于文件的打开和关闭操作。需要注意的是,在程序运行完毕时会调用析构函数,从而关闭文件并将缓存中的内容写入文件。 总的来说,对于C++函数的输入输出以及文件处理,掌握这些基本的操作方法对于编程非常重要。

7.1输入与输出

-格式化I/O:

使用移位操作符进行输入(>>)输出(<<)

int x;
cin >> x;

可以看做一个函数,第一个参数是cin类,第二个参数是int类

如果x是char类,一样看做函数,这里是使用了运算符重载适应不同类

-格式控制

位掩码类型(showpos)

#include<iostream>
int main(int argc, char* argv[])
{
    char x = '0';
    std::cout.setf(std::ios_base::showpos);
    std::cout << x << std::endl;
    int y = static_cast<int>(x);
    std::cout << y << std::endl;
    return 0;
}

结果

取值相对随意(width)

#include<iostream>
int main(int argc, char* argv[])
{
    char x = '0';
    std::cout.setf(std::ios_base::showpos);
    std::cout.width(10);
    std::cout << x << std::endl;
    int y = static_cast<int>(x);
    std::cout << y << std::endl;
    return 0;
}

cin输入后会重置width为0

结果

fill

#include<iostream>
int main(int argc, char* argv[])
{
    char x = '0';
    std::cout.setf(std::ios_base::showpos);
    std::cout.width(10);
    std::cout.fill('.');
    std::cout << x << std::endl;
    int y = static_cast<int>(x);
    std::cout << y << std::endl;
    return 0;
}

结果

补充:另一种写法

#include<iostream>
#include<iomanip>//要引入这个头文件
int main(int argc, char* argv[])
{
    char x = '0';
    int y = static_cast<int>(x);
    std::cout << std::showpos << std::setw(10) << std::setfill('.') << x << '\n';
    std::cout << std::showpos << std::setw(10) << std::setfill('.') << y << '\n';
    return 0;
}

cin提取行为对类型不同


7.2文件与内存操作

文件操作

处于打开状态时无法再次打开

打开才能进行I/O操作

fstream

ifstream

ofstream

is_open()

open()

close()

程序运行完调用析构函数会关闭,关闭会把缓存中的内容写入文件里

通过{}语句体形成域控制生存周期

文件流的打开模式

每种文件流都有缺省打开方式