首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

C++ 字串反轉輸出:字元陣列法與 string.length() 法兩種實作

     編輯:更多程式設計知識

方法一:字元陣列 + 手動尋找結尾

#include <iostream>
using namespace std;

int main() {
    char a[50];
    cout << "please input a string: ";
    cin >> a; // 注意:cin 遇空白停止,含空白請用 cin.getline(a, 50)

    int i = 0, k = 0;
    while (i < 50) {
        if (a[i] == '\0') { // 找到字串結尾
            k = i;
            break;
        }
        i++;
    }

    cout << "reverse order: ";
    for (; k >= 0; k--) {
        cout << a[k];
    }
    cout << endl;
    return 0;
}

方法二:使用 strlen() 取得長度

#include <iostream>
#include <cstring> // strlen 需此標頭
using namespace std;

int main() {
    char a[50];
    cout << "please input a string: ";
    cin >> a;

    int k = strlen(a); // 取得有效長度 (不含 \0)
    cout << "Reverse order: ";
    for (; k >= 0; k--) {
        cout << a[k];
    }
    cout << endl;
    return 0;
}

補充:C++ 風格 string 反轉

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string s;
    cout << "input: ";
    getline(cin, s); // 可含空白
    reverse(s.begin(), s.end());
    cout << "reversed: " << s << endl;
    return 0;
}

比較表

方法優點缺點適用場景
字元陣列 + 手動找 \0無需額外標頭、理解底層固定緩衝區、易溢位、cin 不支援空白教學、嵌入式無 STL 環境
字元陣列 + strlen標準庫函式、簡潔同樣固定緩衝區、cin 不支援空白C 風格字串處理
std::string + reverse動態記憶體、支援空白、STL 演算法需 C++ 執行環境現代 C++ 專案首選

常見錯誤提醒

  • cin >> a 遇空白/換行停止,輸入「Hello World」只讀到「Hello」。請用 cin.getline(a, 50) 或 getline(cin, s)。
  • 迴圈條件 k >= 0 會輸出 a[0] 後 k 變 -1 (若為 unsigned 會無限迴圈),建議用 int k = len - 1; k >= 0; --k。
  • 反轉包含 \0 位置會導致輸出提早結束,應從 len-1 開始。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved