相关疑难解决方法(0)

从C++中的std :: string获取字节

我正在使用C++非托管项目.

我需要知道如何使用这样的字符串"一些数据加密"并得到一个byte []数组,我将用它作为加密的源.

在C#我做

  for (int i = 0; i < text.Length; i++)
    buffer[i] = (byte)text[i];
Run Code Online (Sandbox Code Playgroud)

我需要知道的是如何使用非托管C++.

谢谢!

c++ string

21
推荐指数
2
解决办法
9万
查看次数

是否允许std :: string的end + 1迭代器?

它是有效的创建一个迭代end(str)+1std::string
如果不是,为什么不呢?

这个问题是限制在C++ 11以后,因为在预C++ 11中的数据已经存储在连续块中的任何但是罕见POC玩具的实现,该数据没有具有要被存储的方式.
而且我认为这可能会产生重大影响.

std::string我推测的任何其他标准容器之间的显着差异在于它总是包含一个元素size,而不是它的零终止符,以满足要求.c_str().

21.4.7.1 basic_string访问器[string.accessors]

const charT* c_str() const noexcept;
const charT* data() const noexcept;
Run Code Online (Sandbox Code Playgroud)

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).)

相关: …

c++ string iterator stdstring language-lawyer

21
推荐指数
2
解决办法
984
查看次数

标签 统计

c++ ×2

string ×2

iterator ×1

language-lawyer ×1

stdstring ×1