如何将字符串的元素放入向量?
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 char
用 n
个相同值的元素实例化一个字符串。您可以使用它以及 std::strings
很像 char
:
的容器这一事实
for (auto c : str)
in.emplace_back(1ul, c);
或者,您可以在向量中存储单个字符而不是 std::string
:
std::vector<char> in(str.begin(), str.end());
我想将字符串的特定元素放入 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 char
用 n
个相同值的元素实例化一个字符串。您可以使用它以及 std::strings
很像 char
:
for (auto c : str)
in.emplace_back(1ul, c);
或者,您可以在向量中存储单个字符而不是 std::string
:
std::vector<char> in(str.begin(), str.end());