如何将字符串的元素放入向量

How to put an element of a string to a vector?

本文关键字:向量 元素 字符串      更新时间:2023-10-16

我想将字符串的特定元素放入vector<string>

为了更好地解释我打算做什么:

string str;
vector<string> in;
cin >> str; // input: abc
for(int i = 0;i < str.length();i++) {
       in.push_back(&str[i]);
}

现在我希望vector<string> in的第一个元素是"a"(in[0] = "a"),第二个元素是b等。是否有可能这样做,因为当我打印矢量时,它给了我首先它有abc然后bc,最后只有c

std::string有一个构造函数,该构造函数采用整数计数和单个char来实例化具有相同值n元素的字符串。您可以使用它以及std::strings很像char容器的事实:

for (auto c : str)
  in.emplace_back(1ul, c);

或者,您可以将单个字符存储在向量中,而不是std::string

std::vector<char> in(str.begin(), str.end());
要么使用

std::vector<char>,要么使用 substr

示例 1:

#include <string>
#include <iostream>
#include <vector>
int main()
{
    std::string str;
    std::vector<char> in;
    std::cin >> str; // input: abc
    for (std::string::size_type i = 0; i < str.length(); i++) {
        in.push_back(str[i]);
    }
}

或者更简单的变体:

int main()
{
    std::string str;
    std::cin >> str; // input: abc
    std::vector<char> in(str.begin(), str.end());
}

示例 2:

#include <string>
#include <iostream>
#include <vector>
int main()
{
    std::string str;
    std::vector<std::string> in;
    std::cin >> str; // input: abc
    for (std::string::size_type i = 0; i < str.length(); i++) {
        in.push_back(str.substr(i, 1));
    }
}