Это:
std::vector<std::vector<char>> word(guide.begin(), guide.end());
Не делает то, что вы думаете, что делает. Вы хотите, чтобы каждый char
в guide
использовался для создания vector
размера 1, содержащего этот единственный char
. Но на самом деле это попытка построить vector
из , который char
- и на самом деле для этого есть конструктор: # 3 :
explicit vector( size_type count, const Allocator& alloc = Allocator() );
То есть для вашего первого персонажа, 'A'
, вы не строите вектор, содержащий символ 'A'
, вы создаете вектор, содержащий 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;
}