如何从字符串向量中选择第 n 个位置?

Posted

技术标签:

【中文标题】如何从字符串向量中选择第 n 个位置?【英文标题】:How to select the nth position from a string vector? 【发布时间】:2018-08-08 17:51:11 【问题描述】:

比方说,如何从字符串向量中找到第二个位置?

这是一个字符串向量示例:

1 2 3 4 Hi
7 8 9 0 Bye
2 2 5 6 World

如果我使用example.at(2),它会给我整行2 2 5 6 World

我只想从第一行获取2,而不是获取整行2 2 5 6 World。我该怎么做?

【问题讨论】:

听起来你应该创建一个Record 类,将各个列存储为不同的变量,然后你可以拥有一个std::vector<Record> records; 【参考方案1】:

example.at(2) 的返回值是向量中的第三项,在本例中为 std::string

要访问字符串中的特定字符,您可以使用operator[]。因此,要从第一行中选择 2,您只需执行以下操作:

example.at(0)[2];

【讨论】:

没问题!很高兴我能帮上忙!如果您不介意,请支持我的评论并单击复选标记!我需要增加我的积分大声笑【参考方案2】:

所以你实际拥有的是stringvector 其中string 代表另一个维度,所以你有一个包含行和列的表格,类似于二维数组,在其他方面访问你需要的单个单元格2 个索引,一个用于vector 中的位置索引,另一个用于string 中的位置索引。

因此,在您的情况下,example[0][0] 将在第一行中获得第一个字符串的 char,并且要获得您正在寻找的字符串,您需要编写 example.at(0)[2];

【讨论】:

【参考方案3】:

这应该可行:

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

int main() 
  std::vector<std::string> strings;
  strings.push_back("1234Hi");
  strings.push_back("7890Bye");
  std::cout << strings.at(0)[1] << std::endl; // prints 2
  std::cout << strings.at(1)[1] << std::endl; // prints 8

它有点像一个二维数组:你推入向量的每个字符串都类似于第一个维度,然后字符串的每个字符都类似于第二个维度。

但如上所述,可能有更好的方法来做到这一点,这取决于你到底想要做什么。

【讨论】:

【参考方案4】:

其他答案向您展示了如何访问字符串中的单个数字,但它们假定数字的长度始终为 1 位。如果您需要支持多位数字,请改用std::istringstream()std::stoi() 来解析字符串。

【讨论】:

以上是关于如何从字符串向量中选择第 n 个位置?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 从字符串中提取第二个位置数字

ARM Neon:将非零字节的第 n 个位置存储在 8 字节向量通道中

Javascript在字符串的第n个位置插入空格

20191209-八大排序之选择排序

如何在bash中获得第n个位置参数?

一些固定数字的排列