C ++中有没有办法将字符串转换为字符向量的向量?目前,我这样做:
std::string guide = "ACGCAC";
std::vector< std::vector<char> > word(guide.begin(), guide.end());
但是,正常的索引方法(使用.at())和设置不起作用。如果我尝试将带有此向量的元素设置为另一个向量(见下文),则它不起作用。
word[loc] = bases; //where bases = std::vector<char> and loc = int
我正在尝试使用下面的Python代码,但是在C ++中。感谢您的任何见解。
word = [[letter] for letter in guide]
答案 0 :(得分:2)
此:
using (MemoryStream gifStream = new MemoryStream())
{
collection.Write(gifStream, MagickFormat.Gif);
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = gifStream;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
bitmap.Freeze();
animationImagePlayer.Source = bitmap;
}
不做你认为的事情。您希望std::vector<std::vector<char>> word(guide.begin(), guide.end());
中的每个char
用于构建大小为1的guide
,其中包含该vector
个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;
}