我正在使用C++非托管项目.
我需要知道如何使用这样的字符串"一些数据加密"并得到一个byte []数组,我将用它作为加密的源.
在C#我做
for (int i = 0; i < text.Length; i++)
buffer[i] = (byte)text[i];
Run Code Online (Sandbox Code Playgroud)
我需要知道的是如何使用非托管C++.
谢谢!
它是有效的创建一个迭代end(str)+1的std::string?
如果不是,为什么不呢?
这个问题是限制在C++ 11以后,因为在预C++ 11中的数据已经存储在连续块中的任何但是罕见POC玩具的实现,该数据没有具有要被存储的方式.
而且我认为这可能会产生重大影响.
std::string我推测的任何其他标准容器之间的显着差异在于它总是包含一个元素size,而不是它的零终止符,以满足要求.c_str().
21.4.7.1 basic_string访问器[string.accessors]
Run Code Online (Sandbox Code Playgroud)const charT* c_str() const noexcept; const charT* data() const noexcept;1返回:一个指针
p,p + i == &operator[](i)用于每个iin[0,size()].
2复杂性:恒定时间.
3要求:程序不得更改存储在字符数组中的任何值.
尽管如此,尽管它应该保证所述表达式是有效的,但为了保持与零终止字符串的一致性和互操作性,如果没有别的话,我发现的唯一一段对此表示怀疑:
21.4.1 basic_string一般要求[string.require]
4对象中的类似char的
basic_string对象应连续存储.也就是说,任何basic_string对象s,身份&*(s.begin() + n) == &*s.begin() + n应持的所有值n这样0 <= n < s.size().
(所有引用均来自C++ 14最终草案(n3936).)
相关: …