如何从字符串向量中选择第 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】:所以你实际拥有的是string
的vector
其中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 个位置?的主要内容,如果未能解决你的问题,请参考以下文章