- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有两个string
变量,m
和n
:
#include <string>
string m = "0100700\0"
cout << m.size() << endl; // it prints: 7
string n;
n += "0100700"
n += '\0';
cout << n.size() << endl; // it prints: 8
我以为两者都有 8 个字符,但 m
只有 7 个字符而 n
有 8 个字符。为什么会这样?
最佳答案
首先要注意的是 std::string
没有可以从底层数组推断字符串文字长度的构造函数。它有一个构造函数,它接受 const char*
并将其视为以 null 结尾的字符串。这样做时,它会复制字符,直到找到第一个 \0
。
这是 string m = "0100700\0";
中使用的构造函数,这就是为什么在第一种情况下你的字符串长度为 7 的原因。请注意,没有其他方法可以获取从指针到第一个元素的 char 数组的长度。
在第二个示例中,您将一个字符添加到长度为 7 的预先存在的 std::string
对象。这会将长度增加到 8。如果您要迭代字符串,您将能够看到第 8 个元素是 '\0'
。
for (auto c: n)
if (c == 0) std::cout << "null terminator" << std::endl;
为了初始化包含'\0'
字符的字符串,您有以下选择:
使用初始化列表:
std::string s{'a', 'b', '\0', 'd', 'e', '\0', 'g'};
使用 std::string
的迭代器构造函数从不同的容器或数组构造:
std::vector<char> v{'a', 'b', '\0', 'd', 'e', '\0', 'g'};
char c[] = {'a', 'b', '\0', 'd', 'e', '\0', 'g'};
const char* ps = "ab\0de\0g";
std::string s0(std::begin(v), std::end(v));
std::string s1(std::begin(c), std::end(c));
std::string s2(ps, ps + 8);
关于C++:关于空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30272667/
我正在尝试用 Java 构建一个字符串,该字符串的长度最多为 3,最少为 1。 我正在根据整数数组的内容构建字符串,如果数组的内容为 -1,我想在字符串中输出一个空字符。否则字符串将包含整数的字符版本
我有一个类,其中有一个方法可以在字符串中包含 NUL 字符的情况下终止程序。具体表达是这样的: stringVar.indexOf('\u0000') < 0 这个字符串是通过 Scanner 从用户
我有一个 wchar_t 数组。我需要在数组中的特定位置添加一个 unicode 空字符。 wchar_t var1[100]; var1[79] = '\u0000'; 我尝试了上面的方法,但出现以
好吧,这听起来可能是重复的,但我已经尝试了所有可能性,例如 str.strip()、str.rstrip()、str.splitline (),还 if-else 检查像: if str is not
System.out.println("-----------------------------------------------------------"); System.out.pr
我有一个奇怪的问题。我从公司内部的许多不同应用程序接收数据,并将这些数据显示在网站上。根据发送数据的系统,数据本身可能在字符串中包含一些奇怪的字符。我的问题是我有一个用户可以搜索以允许其中包含此数据的
我遇到了 aSSL ,这似乎有几年历史了,想知道是否有人有其他“安全”AJAX 连接代码示例?显然,这不如使用 SSL 证书安全,但使用 null character SSL在那里进行攻击(最近针对
我有一个类似于以下内容的 pyspark 数据框: df = sql_context.createDataFrame([ Row(a=3, b=[4,5,6],c=[10,11,12], d='b
我有以下要执行的查询: MyModel.objects.annotate(current_name=Coalesce('nickname', 'name')).order_by('current_na
每当 rails 变量等于 nil(或者实际上每当我使用 rails 代码(参见第 3 个代码示例))时,我的 html 中就会得到一串空字符。 new.html.haml %h1.editable.
我是一名优秀的程序员,十分优秀!