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

C++ 字符串刪除指定位置字符:手動數組移動實現

     編輯:程式設計疑難解答

題目要求

輸入含空格字符串(≥10 字符)與刪除位置 n,刪除第 n 個字符後輸出。例:"jiangsu123", n=5 → "jiansu123"(刪除 'g')。

代碼實現

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char s1[200], s2[200];
    int n;
    cin.getline(s1, 200); // 讀取整行含空格
    cin >> n;             // 讀取位置
    int len = strlen(s1);
    if (n >= 1 && n <= len) {
        // 從 n 開始向前覆蓋(0-based 索引 n-1 被跳過)
        for (int i = n; i < len; ++i) {
            s1[i - 1] = s1[i];
        }
        s1[len - 1] = '\0'; // 新結束符
    }
    cout << s1 << endl;
    return 0;
}

邏輯解析

  • cin.getline 讀取含空格行,cin >> n 讀取整數。
  • 刪除第 n 個字符(1-based),即將索引 n 及之後的字符前移一位覆蓋索引 n-1。
  • 循環條件 i < len,最終在 len-1 處寫入 '\0' 截斷。
  • 未做邊界檢查的版本會越界,生產代碼必須加 if (n >= 1 && n <= len)。

std::string 版本

string s; getline(cin, s); int n; cin >> n;
if (n >= 1 && n <= s.length()) s.erase(n - 1, 1);
cout << s << endl;

erase(pos, count) 直接刪除 count 個字符,極其簡潔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved