如何将终止NUL字符\ x00变为字符串?

时间:2011-05-23 23:01:44

标签: c++ string escaping

我怎样才能得到一个带有空字符\ x00的字符串,因为\ x00也是终止字符?

我的确需要部分程序。

我需要的字符串是“\ x00 \ x00 \ x00 \ x00”。它有一些特殊的语法吗?它是什么?

5 个答案:

答案 0 :(得分:8)

在C ++中,std::string类可以在包含NUL字符的情况下工作。

然而:

  • c_str()功能将失败。
  • 读取const char*的构造函数将失败。

使用std::vector<char>可能会更好。

答案 1 :(得分:2)

你正确地做到了。您只需 避免将 作为结束字符解释 。

但是你怎么知道它的结局呢?我不知道;你可以在某处存储长度。

答案 2 :(得分:2)

可以有一个嵌入空值的“普通”字符串,但是在第一个空格中,任何需要以空字符结尾的字符串的函数都会停止处理它;因此,你需要使用计数字符串。

C ++ std::string是一种计数字符串,您可以使用它来携带这些字符串。但请记住,在使用它时不应将其转换回C字符串(即不要使用c_str()方法),否则您将返回原点。

但是,要获得更具体的建议,您应该更好地解释一下您想要实现的目标。

答案 3 :(得分:2)

如果它是你想要的std :: string,你可以获得任何你想要的大小

std::string s(10, '\0');

为您提供一个包含10个字符的字符串。

答案 4 :(得分:2)

std::string str("\0\0\0\0", 4);

这个构造函数告诉string使用char *的前4个字符,而不将任何\ 0字符解释为null。