c++ - 如何在 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;
}
解决方案
您可以将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);
});
}
推荐阅读
- sql - 从 PrestoSQL 中的 varchar 中提取数组
- google-cloud-bigtable - BigTable:一长排与多排短排
- xml - 将 xsd.exe 与 www.w3.org/TR/xmlschema11-1/ 一起使用?
- flutter - Flutter:映射将值添加到相同的键
- python - io.UnsupportedOperation:在a+模式下不可读
- python - 解决没有列表理解或循环的返回函数?
- sql - 如何“检测” SQL 列中值的变化?
- javascript - 如何在 JavaScript 中按日期范围过滤来自 API 的 JSON 数据
- adb - 机器人框架指南
- python - 从机器人文件调用的 Python POST 请求抛出 400