【问题标题】:How to select the nth position from a string vector?如何从字符串向量中选择第 n 个位置?
【发布时间】: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;

标签: c++ string vector position


【解决方案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() 来解析字符串。

      【讨论】:

        猜你喜欢
        • 2021-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-01
        相关资源
        最近更新 更多