当字符串与数组值连接时,cout 打印垃圾
cout printing garbage when string is concatenated with array value
这是我最基本的 C++ 代码:
#include <iostream>
char values[] = {'y'};
int main() {
std::cout << "x" + values[0];
}
我的预期输出只是 xy
,但我只是随机 text/symbols
也许你打算这样做:
std::cout << "x" << values[0];
否则,您将使用 "x"
(它会衰减为指向 const 数组第一个元素的指针,该数组在内存中保存字符 {'x'
, '[=13=]'
}),并将 'y'
(转换为 int
时的数值为 121)添加到该指针。
向指针添加一个整数会改变它指向的内容。您正在读取超出内存中 'x'
字符 121 个字节的内存,因此您将读取随机字节,或导致访问冲突。
这是我最基本的 C++ 代码:
#include <iostream>
char values[] = {'y'};
int main() {
std::cout << "x" + values[0];
}
我的预期输出只是 xy
,但我只是随机 text/symbols
也许你打算这样做:
std::cout << "x" << values[0];
否则,您将使用 "x"
(它会衰减为指向 const 数组第一个元素的指针,该数组在内存中保存字符 {'x'
, '[=13=]'
}),并将 'y'
(转换为 int
时的数值为 121)添加到该指针。
向指针添加一个整数会改变它指向的内容。您正在读取超出内存中 'x'
字符 121 个字节的内存,因此您将读取随机字节,或导致访问冲突。