首页 > 解决方案 > 如何在 C++ 中删除向量中保存的字符串中的多个字符?

问题描述

我想删除向量中字符串的字符,从用户输入的索引开始,直到该字符串的结尾。例如,如果在索引 0 中,我的向量有字符串“hello”,索引 1 有字符串“goodbye”,我想删除第一个字符串中的字符“llo”和第二个字符串中的“dbye”。所以结果将是索引 0 中的“he”和索引 1 中的“goo”。在我发布的代码中,我没有添加从用户那里获取索引输入的部分。但只是假装,它是索引 4 及以上。我该怎么做?谢谢你。

我尝试在要开始删除的索引处放置一个 '\0' 字符,但这不起作用。

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

using namespace std;

int main()
{
    int maxSize;
    cin >> maxSize;
    string usrInput;
    vector<string> myArray;

    for(int i = 0; i < maxSize; i++)
    {
        cin >> usrInput;
        myArray.push_back(usrInput);
    }

    myArray[0][4] = '\0';

    cout << myArray[0];

    return 0;
}

标签: c++

解决方案


您可以将substrstd::string方法与标准算法std::for_each结合使用,以将切割函数应用于向量中的所有字符串。

#include <algorithm> // std::for_each

std::cout << "cut at length: ";

if(size_t cutpoint; std::cin >> cutpoint) {
    std::for_each(myArray.begin(), myArray.end(), [&cutpoint](std::string& str) {
        str = str.substr(0, cutpoint);
    });
}

推荐阅读