string结尾问题(已在VS2010下验证)
来源:互联网 发布:sys.stdin.read 知乎 编辑:程序博客网 时间:2024/05/18 18:45
今天在带大一学生C++上机时,涉及到一个string类型的字符串是否以\0结尾的问题,本来我很坚定string类型结尾并没有\0,C风格的字符数组才会那样。但是程序运行结果却说明string类型的字符串后面确实有\0。
于是回实验室后自己又实验了下,才发现这和编译器有关,真坑爹。
对于如下一段测试程序,在C-free 5.0和g++ 4.1上输出yes,而在VS2010上执行时报错!
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string str="x";
- if(str[1]=='\0')
- cout<<"yes";
- else
- cout<<"no";
- return 0;
- }
当把上面代码中str[1]改成str[2]时,VS2010依然报错,但C-free 5.0输出了no,而g++ 4.1还是输出yes
另外,在网上查资料时发现:
全局的std::getline返回std::string,这个不一定是'\0'结尾。有的编译器会加,有的编译器不会加。但是,注意:新的C++标准C++11里面规定std::string一定是以'\0'结尾,就看你的编译器有没有实现新标准了。
istream::getline返回c字符数组,这个一定是'\0'结尾。
0 0
- string结尾问题(已在VS2010下验证)
- VS2010 基于windows media player做音乐播放器,问题解析(已验证)
- 在验证模式为Forms的情况下,如何解决自动登录问题. (已解决)
- VS2010及以上常用快捷键(已验证可用)
- TLD(已测试)--VS2010下TLD算法源码调试详解,解决卡机问题
- opengl在vs2010下的配置问题
- opengl在vs2010下的配置问题
- opengl在vs2010下的配置问题
- opengl在vs2010下的配置问题
- opengl在vs2010下的配置问题
- jTT5 在vs2010下编译问题集
- 在VS2010下编译和使用tesseract_ocr识别验证码
- 在VS2010下编译和使用tesseract_ocr识别验证码
- 用VC++在VS2010中的类型转换问题(char*或string转换成LPCWSTR)
- struts2和servlet的共存问题 (已在实际问题中验证)
- VS2010下编译的库在VC6下使用问题
- VS2010在NET3.5框架下Resgen.exe已退出,代码为2
- VS2010在NET3.5框架下Resgen.exe已退出,代码为2
- Thinkpad linux 读卡器驱动
- ASC(21)A(二分图最大匹配)
- 详解Java解析XML的四种方法
- DirectX11 学习笔记3 - 创建一个立方体 和 坐标轴
- VS2010配置使用OpenMP
- string结尾问题(已在VS2010下验证)
- poj - 1088 - 滑雪(dp)
- 这一刻的感动
- Leetcode--Sort List
- 我与C++设计模式(八)——组合模式
- 笔记本自带读卡器linux驱动
- HDU 5057——Argestes and Sequence(树状数组+离线)
- zigbee协议栈串口收发扩展
- 对象文件映射(ODM (Object-Document Mapper))