我在尝试将字符串拼接的'终止字符数组时,一个奇怪的输出:将char数组(以空格结尾)添加到C++中的字符串的Bug。
#include <iostream>
#include <string>
using namespace std;
int main (int argc, const char * argv[])
{
char someCharArray[6] = {'H', 'e', 'l', 'l', 'o', ' '};
string someString = "world!";
cout << someCharArray + someString << endl;
}
将返回:
Hello gR
world!
,但我注意到,如果我改变的大小阵列到7
及以后,输出将会很好Hello world!
。这是为什么?
#include <iostream>
#include <string>
using namespace std;
int main (int argc, const char * argv[])
{
char someCharArray[5] = {'H', 'e', 'l', 'l', 'o'};
string someString = " world!";
cout << someCharArray + someString << endl;
}
虽然这样做确实有效,除非你有足够的理由想要这么做,但是当char charCharArray =“Hello”时它很愚蠢;'在没有让你数字的情况下做同样的事情。 – Donnie
谢谢!我只是在学习CPP,并不知道。 – cvb0rg
@Donnie:如果要精确控制内存需求,有时需要使用这种字符阵列,特别是在编程微控制器时。 – ul90