C++ 中有没有办法将字符串转换为字符 vector 的 vector ?目前,我正在这样做:
std::string guide = "ACGCAC";
std::vector< std::vector<char> > word(guide.begin(), guide.end());
但是,正常的索引方式(使用 .at())和设置不起作用。如果我尝试将具有此 vector 的元素设置为另一个 vector (见下文),它不起作用。
word[loc] = bases; //where bases = std::vector<char> and loc = int
我正在尝试执行与下面的 Python 代码等效的操作,但是是在 C++ 中。感谢您的任何见解。
word = [[letter] for letter in guide]
最佳答案
这个:
std::vector<std::vector<char>> word(guide.begin(), guide.end());
并没有按照您的想法行事。您希望 guide
中的每个 char
用于构建大小为 1 的 vector
,其中包含单个 char
。但实际上它所做的是尝试从 char
构造一个 vector
- 实际上有一个构造函数:#3 :
explicit vector( size_type count, const Allocator& alloc = Allocator() );
也就是说,对于您的第一个字符 'A'
,您不是在构造一个包含字符 'A'
的 vector ,而是在构造一个包含65 个'\0'
。这是因为 char
可以隐式转换为 size_t
。
只需手动执行您想执行的操作:
std::vector<std::vector<char>> as_individual(std::string const& s) {
std::vector<std::vector<char>> v;
v.reserve(s.size());
for (char c : s) {
v.push_back({c});
}
return v;
}
关于C++:将字符串转换为 vector ,其中每个元素都是该字符的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50105866/