- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "hello";
cout << s[5] << endl;
return 0;
}
在上面的代码中,如果我打印 s[5]
,它会正确打印一个 NULL
字符。但是,如果我将代码更改为:
#include <iostream>
#include <string>
using namespace std;
int main() {
char[] s = {'a','b','c','d','e'};
cout << s[5] << endl;
return 0;
}
它不打印 NULL
字符,而是随机打印一些字符。如果我将字符串存储为 string
或 char*
,则行为符合我的预期。
但如果我显式声明字符数组,编译器如何知道数组何时结束?数组的大小是否在编译时存储?
最佳答案
字符串文字和 std::string
存储空终止字符串。
但是一个包含 5 个 char
的数组声明如下:
char s[] = {'a','b','c','d','e'};
仅包含 5 个 char
,没有空终止符。
但是编译器确实知道s
的大小。它是 s
类型的一部分。它没有方便的 .size()
函数,如 std::string
、std::vector
或 std::array
可以,但您可以通过以下方式获得它:
sizeof(s) / sizeof(s[0])
或者在 C++11 中更安全:
std::extent<decltype(s)>::value
或者在 C++17 中:
std::size(s)
( demo )
虽然数组有衰减为指针的习惯,但无法获得大小,您必须自己跟踪它。这就是为什么在 C++ 中首选 std::string
、std::vector
或 std::array
。
关于c++ - 空字符行为 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31845767/
我正在尝试用 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.
我是一名优秀的程序员,十分优秀!