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

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

我想将字符串的特定元素放入 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::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));
    }
}

std::string has a constructor that takes a integral count and a single charn 个相同值的元素实例化一个字符串。您可以使用它以及 std::strings 很像 char:

的容器这一事实
for (auto c : str)
  in.emplace_back(1ul, c);

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

std::vector<char> in(str.begin(), str.end());