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

时间:2018-08-08 17:51:11

标签: c++ string vector position

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

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

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行。我该怎么办?

4 个答案:

答案 0 :(得分:2)

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

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

example.at(0)[2];

答案 1 :(得分:1)

因此,您实际拥有的是vector中的string,其中string代表另一个维度,因此您有一个既有行又有列的表,类似于2D数组,其他访问单个单元格,您需要2个索引,一个索引用于vector中的位置,另一个索引用于string中的位置。

因此,在您的情况下,example[0][0]是要在第一行中获取字符串的第一个char,而要查找的则是example.at(0)[2]; < / p>

答案 2 :(得分:1)

这应该有效:

#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
}

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

但是如上所述,可能有更好的方法,具体取决于您要尝试执行的操作。

答案 3 :(得分:1)

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