首页 > 解决方案 > 在特定位置插入字符

问题描述

所以我必须编写一个程序,在特定位置的数组中添加一个字符,以获取用户的输入。EG,数组是{'A','B','R','L','O','M','C'},所以在索引2处插入“M”后,它应该变成{' A','B','M','R','L','O','M','C'}。我的问题是我的代码覆盖了索引 2 处的值,因此在此过程中丢失了它。

这是代码:

    char array[20], insert, temp;
    int size = 10, index, count = 0;
    cout << "Enter characters : ";
    cin >> array;
    cout << "Enter a character you want to insert : ";
    cin >> insert;
    cout << "Enter index you want to insert in : ";
    cin >> index;
    for (int i = index; array[i] != '\0'; i++)
    {
      temp = array[index + 1];
      array[index] = insert;
    }

    for (int i = 0; array[i] != '\0'; i++)
    {
        cout << array[i] << " ";
    }

标签: c++arraysstringinsert

解决方案


你不应该使用 C 字符串。但更重要的是,您不应将 C 字符串与 std::cin 一起使用,因为您无法限制字符数,并且您的程序可能会导致缓冲区溢出。

您应该使用像std::string这样的动态容器。大多数容器提供类似std::string::insert的方法来在特定位置插入元素。

了解你的工具(算法),不要重新发明轮子。

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::size_t;
using std::string;

int main()
{
    cout << "Enter characters : ";
    string array;
    cin >> array;
    cout << "Enter a character you want to insert : ";
    string insert;
    cin >> insert;
    cout << "Enter index you want to insert in : ";
    size_t index;
    cin >> index;
    array.insert(index, insert);
    for (const auto &c : array) {
        cout << c << " ";
    }
}

推荐阅读