如何在 C++ 中列印字串

Jinku Hu 2023年1月30日 2020年10月18日
  1. 使用 std::cout<< 操作符列印字串
  2. 使用 std::copy 演算法列印字串
  3. 使用 printf() 函式列印字串
如何在 C++ 中列印字串

本文將演示有關如何在 C++ 中列印字串的多種方法。

使用 std::cout<< 操作符列印字串

std::cout 是控制輸出到流緩衝區的全域性物件。為了將 s1 字串變數輸出到緩衝區,我們需要使用運算子-<< 稱為流插入運算子。下面的例子演示了單字串輸出操作。

#include <iostream>
#include <string>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;

int main(){
    string s1 = "This string will be printed";
    cout << s1;
    cout << endl;

    return EXIT_SUCCESS;
}

輸出:

This string will be printed

使用 std::copy 演算法列印字串

copy 方法來自 <algorithm>STL 庫,它可以用多種方式操作範圍元素。由於我們可以把 string 容器本身作為一個範圍來訪問,所以我們可以通過在 copy 演算法中加入 std::ostream_iterator<char> 引數來輸出每個元素。

注意,這個方法也可以在字串的每個字元之間傳遞一個特定的定界符。在下面的程式碼中,沒有指定定界符("")以原始形式列印字串。

#include <iostream>
#include <string>
#include <vector>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::copy;

int main(){
    string s1 = "This string will be printed";

    copy(s1.begin(), s1.end(),
         std::ostream_iterator<char>(cout, ""));
    cout << endl;

    return EXIT_SUCCESS;
}

使用 printf() 函式列印字串

printf 是用於格式化輸出的強大工具。它是 C 標準輸入輸出庫的一部分。它可以直接從 C++ 程式碼中呼叫。printf 的引數數量是可變的,它將字串變數作為 char *型別,這意味著我們必須從 s1 變數中呼叫 c_str 方法來傳遞它作為引數。請注意,每個型別都有自己的格式指定符(例如,string-%s),它們列在下面的表格中。

指定符 說明
% 列印 % 字元(這種型別不接受任何標誌、寬度、精度、長度欄位)
d, i int 作為一個有符號的整數。%d%i 是輸出的同義詞,但當與 scanf 一起使用時,輸入就不同了(使用%i 會將數字解釋為十六進位制,如果前面是 0x,則解釋為八進位制。)
u 列印十進位制無符號 int
f, F f 和 F 只是在無限數或 NaN 的字串列印方式上有所不同(f 為 inf、infinity 和 nan;F 為 INF、INFINITY 和 NAN)
e,E 標準形式的 doubled.dde±dd)。E 轉換使用字母 E(而不是 e)來引入指數。
g, G 在正常或指數表示法中使用 double,以其大小更合適。g 使用小寫字母,G 使用大寫字母。
x, X x 使用小寫字母,X 使用大寫字母。
o 八進位制的無符號整型
s 以空為結束的字串
c char(字元)
p void* (指向 void 的指標),採用執行定義的格式。
a, A 以十六進位制表示法的 double 值,從 0x 或 0X 開始。a 使用小寫字母,A 使用大寫字母。
n 不列印任何內容,但將目前成功寫入的字元數寫入一個整數指標引數中。
#include <iostream>
#include <string>
#include <iterator>

using std::cout; using std::cin;
using std::endl; using std::string;

int main(){
    string s1 = "This string will be printed";
    cout << s1;
    cout << endl;

    printf("%s", s1.c_str());
    cout << endl;

    return EXIT_SUCCESS;
}
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - C++ String