第 3 節

輸入輸出

0瀏覽次數0訪問次數--跳出率--平均停留

輸入輸出

數據的輸入

作用:用於從鍵盤獲取數據

**關鍵字:**cin

語法: cin >> 变量

示例:

int main(){

    //整型输入
    int a = 0;
    cout << "请输入整型变量:" << endl;
    cin >> a;
    cout << a << endl;

    //浮点型输入
    double d = 0;
    cout << "请输入浮点型变量:" << endl;
    cin >> d;
    cout << d << endl;

    //字符型输入
    char ch = 0;
    cout << "请输入字符型变量:" << endl;
    cin >> ch;
    cout << ch << endl;

    //字符串型输入
    string str;
    cout << "请输入字符串型变量:" << endl;
    cin >> str;
    cout << str << endl;

    //布尔类型输入
    bool flag = true;
    cout << "请输入布尔型变量:" << endl;
    cin >> flag;
    cout << flag << endl;
    return EXIT_SUCCESS;
}

運行/觀察結果: 運行時需要按提示輸入數據,輸出結果會隨輸入內容和分支條件變化。

C 風格 I/O 與 C++ 流式 I/O

1.C語言的stdio.h中的scanf和printf

int scanf(const char *format, ...) 函數從標準輸入流 stdin 讀取輸入,並根據提供的 format 來瀏覽輸入。

int printf(const char *format, ...) 函數把輸出寫入到標準輸出流 **stdout ,並根據提供的格式產生輸出。

printf("输出内容(可含占位符)",变量1,变量2)

printf("%d",a);      //输出一个整形变量a
printf("%f %f",a,b);   //输出二个单精度浮点数变量(fp32) a,b中间以空格隔开
printf("%d序号对应的值是%lf",a,b);   //输出二个单精度浮点数变量a,b中间以空格隔开
printf("%.2f",a);   //输出一个单精度浮点数(fp32) a,并保留两位小数
printf("你好")  //输出“你好”字符串

運行/觀察結果: 運行後會按輸出語句打印對應內容,變量值可結合初始化、賦值和函數調用順序推導。

scanf("%d",&a);           //输入一个整形数
scanf("%d %d",&a,&b);   //输入两个整形数,中间以空格隔开      
scanf("%d,%d",&a,&b);   //输入两个整形数,中间以逗号隔开

運行/觀察結果: 運行時需要按提示輸入數據,輸出結果會隨輸入內容和分支條件變化。

2.C++的iostream中的std::cin和std::cout

cout 是與流插入運算符 << 結合使用

std::cout << a;   //输出一个变量a
std::cout << "你好"   //输出"你好"
std::cout << "结果是:" << a << std::endl  //输出 结果是: a  并换行

運行/觀察結果: 運行後會按輸出語句打印對應內容,變量值可結合初始化、賦值和函數調用順序推導。

cin 是與流提取運算符 >> 結合使用

std::cin >> a     //输入一个变量a

運行/觀察結果: 運行時需要按提示輸入數據,輸出結果會隨輸入內容和分支條件變化。

現代 C++ 的格式化輸出

前面介紹的 printfstd::cout 都很常用,但各有缺點:printf 的格式佔位符寫錯時不夠類型安全,std::cout 連續輸出多個變量時又比較囉嗦。

現代 C++ 提供了更適合格式化輸出的工具:

  • std::format(C++20):生成格式化後的 std::string,寫法簡潔,類型安全。
  • std::print / std::println(C++23):直接格式化輸出,println 會自動換行。

例如輸出一個名字和分數,std::cout 常寫成 std::cout << name << ": " << score << std::endl;,現代寫法可以寫成 std::println("{}: {}", name, score);

std::print / std::println 默認輸出到標準輸出,也可以把第一個參數寫成 stdoutstderr。這裏的 stdout / stderr 是 C 標準庫的 FILE*,不是 std::cout

後面現代 C++ 章節會專門講:std::format / std::print

音乐页