char a[10];
cin>>a;
//标准输入,会再字符串最后加上空字符:'
char a[10];
cin>>a;
//标准输入,会再字符串最后加上空字符:'\0'?
char *p=a;
while(*p)
{
cout<<*p;
++p;
}
9 个解决方案
#1
问题:
1.
语句,从标准设备输入,会在字符串最后加上空字符:'\0'?
2.程序,有陷阱,数组可能会越界。
怎么,更改它呢?
1.
cin>>a;
语句,从标准设备输入,会在字符串最后加上空字符:'\0'?
2.程序,有陷阱,数组可能会越界。
怎么,更改它呢?
#2
https://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt2
In either case, an additional null character value CharT() is stored at the end of the output.
所以会加0
stream >> c >> std::setw(MAX) >> cstr;
是越界解决之道
当然,既然是C++,为何不用string?
In either case, an additional null character value CharT() is stored at the end of the output.
所以会加0
stream >> c >> std::setw(MAX) >> cstr;
是越界解决之道
当然,既然是C++,为何不用string?
#3
为什么加'\0',简单理解就是一个字符串,它总会有结束的地方,大家约定以'\0'来表示咯。
#4
2楼:
给个完整代码。
给个完整代码。
#5
亲测, 会加‘\0’的;
#6
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
#7
ForestDB:
std::setw(MAX),这语句怎用?
给个程序。
std::setw(MAX),这语句怎用?
给个程序。
#8
2楼:
给个实例。
给个实例。
#9
ForestDB:
2楼,给个实例!
2楼,给个实例!
'? //标准输入,会再字符串最后加上空字符: