- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我的部分代码:
//num is an int
string s = "" + num;
当我在 Macbook 上的 Xcode 中运行它时,s 将被分配给一个奇怪的字符串。任何人都可以向我解释一下吗?我真的很困惑。谢谢。
最佳答案
我假设 string
指的是std::string
类型,在标准标题中声明 <string>
.您还没有将其作为上下文 - 从技术上讲,根据您提供的信息,它可能是前面的 typedef
或宏。
原因的解释
string s = "" + num;
给出一个“奇怪的字符串”是""
在内存中表示为 const
一个数组 char
其值为零。在表达式 "" + num
中, ""
转换为指针(等于 char
的地址,值为零),并且 + num
然后给出内存中某个位置的地址,num
之后的字符。
如果num
非零,该内存地址可能不存在,或者(如果存在)可能包含任意数据。
在任何情况下,该指针都会传递给 std::string
的构造函数(为了构造 s
)。该构造函数从给定的地址开始,并不断将数据复制到 std::string
中。直到碰巧找到一个值为零的字符。中间的字符可以是任何东西 - 它们是恰好位于该内存位置的任何东西。
形式上,C++ 标准将所有这些(通过错误指针访问数据)描述为未定义的行为。这意味着 C++ 标准没有说明允许的结果是什么,所以任何结果都是允许的。它可能会导致您的字符串中出现奇怪的数据。操作系统可能会检测到您的程序正在访问它不应该访问的内存,并强制终止您的程序。它可以重新格式化您的硬盘并重新安装您的操作系统。
假设你只想写 num
到一个字符串(例如 num
与值 42
导致像 "42"
的字符串),然后通常的技术是转换 num
到 std::string
.例如;
std::string s = to_string(num); // C++11 or later
或
#include <sstream> // pre_C++11 (albeit valid in C++11)
std::ostringstream ostr;
ostr << num;
std::string s(ostr.str());
关于c++ - 空字符串加一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689977/
我正在尝试用 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.
我是一名优秀的程序员,十分优秀!