我怎样才能得到一个带有空字符\ x00的字符串,因为\ x00也是终止字符?
我的确需要部分程序。
我需要的字符串是“\ x00 \ x00 \ x00 \ x00”。它有一些特殊的语法吗?它是什么?
答案 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。