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

时间:2015-03-08 18:01:12

标签: c++ string 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

2 个答案:

答案 0 :(得分:2)

std::string has a constructor that takes a integral count and a single char实例化具有相同值的n个元素的字符串。您可以使用此std::stringschar

的容器非常相似的事实
for (auto c : str)
  in.emplace_back(1ul, c);

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

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

答案 1 :(得分:1)

使用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));
    }
}