| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1173 人关注过本帖
标题:cin.getline(a,5,'/n')输出为什么是4个不是5个
只看楼主 加入收藏
hugh2006
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-7-12
收藏
 问题点数:0 回复次数:5 
cin.getline(a,5,'/n')输出为什么是4个不是5个
#include<iostream.h>
using namespace std;
int main()
{
char a[3];
cin.getline(a,5,'\n');
cout<<a<<endl;
system("pause");
return 0;
}
搜索更多相关主题的帖子: cin getline 输出 
2008-07-12 16:32
水中无月
Rank: 1
等 级:新手上路
帖 子:190
专家分:9
注 册:2008-6-17
收藏
得分:0 
是"/n"还是"\n"啊?

十里平湖霜满天,寸寸青丝愁华年,对月形单望相互,只羡鸳鸯不羡仙.
2008-07-12 17:09
冥玫怪盗
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-7-11
收藏
得分:0 
我也刚学习C++,可能说的不是很对,但是我感觉是你声明的数组有问题啊, char a[3],里面只能容纳4个元素啊。
a[0]  a[1]  a[2]  a[3]
2008-07-12 17:41
linren
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2005-12-11
收藏
得分:0 
#include<iostream> //注意没有“.h”
using namespace std;

int main()
{
    char a[3];
    
    cin.getline(a,5,'\n');
    cout<<a<<endl;
    
    system("pause");
    return 0;
}

[bo]说明:[/bo]
char a[3];
上面这句是创建了一个字符数组,它可以存放三个字符。这三个字符的存放地址如下:
a[0]、a[1]、a[2]

值得注意的是,c++的编译器不会检查数组的下标是否有效……
所以就算你使用了a[10000],在编译时也查不出来问题……

不过在运行时,这有可能会破坏数据或代码,也有可能不会破坏……
有可能导致程序异常终止,也有可能不会……

所以后面的:
cin.getline(a,5,'\n');
这一句是有风险的

它把输入的5个字符(这5个字符中最后一个字符是'\0',所以就是一个字符串)
分别放在了a[0]、a[1]、a[2]、a[3]、a[4]中……
其中a[3]和a[4]是越界的……

总之,最好不要冒这个风险……
不要越界使用数组……

getline的三个参数分别是:
1)字符串的存放地址
2)字符串长度
3)分界符

楼主问到为什么最后显示出来了4个字符,而不是5个?
这是因为这个是字符串,而不是字符数组……
字符串是要以'\0'作为结束符的……
所以显示出来的字符是4个而不是5个……

所以以上程序最好写成这样:
#include<iostream>
using namespace std;

int main()
{
    char a[[bo]5[/bo]];
    
    cin.getline(a,5,'\n');
    cout<<a<<endl;
    
    system("pause");
    return 0;
}

生活就是一个七日接着又一个七日
2008-07-12 20:15
我是杨过
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2007-11-23
收藏
得分:0 
楼上的回答有道理!
楼主应该看看cin.getline();各个参数的作用!

不要幻想,因为那从来不会是真的!
2008-07-12 21:04
hugh2006
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-7-12
收藏
得分:0 
原来如此
首先我没注意到a[];
其次原因是cin.getline()自动把结果作字符串 处理了。
晓得了,谢了
2008-07-12 22:43
快速回复:cin.getline(a,5,'/n')输出为什么是4个不是5个
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015017 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved