我想将字符串的特定元素放到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
?
答案 0 :(得分:2)
std::string
has a constructor that takes a integral count and a single char
实例化具有相同值的n
个元素的字符串。您可以使用此std::strings
与char
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));
}
}