荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bakey (猪朋狗友), 信区: Program
标  题: [合集]讨论:getline()的用法...
发信站: 荔园晨风BBS站 (2005年12月28日01:31:03 星期三), 站内信件

☆   1  ──────────── 我是分割线 ─────────────────☆
发信人: starsun (小刚与微软 ), 信区: Program
标  题: 讨论:getline()的用法...
时  间: Sun Dec 25 16:00:22 2005

cin.getline(char *, int, char),读取由int字段指定长度的字符串,或读到char字段所指

定的字符为止。
注意的是:getline()如果在遇到回车符也会结束的,不过它和get()不同的是它会把回车符也

读进字符串中!

我记得我学的是这样的,不知各们同学有什么不同的意见.


☆   2  ──────────── 我是分割线 ─────────────────☆
发信人: kaman (天外飛仙), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: 2005年12月25日16:06:36 星期天


我记得getline不读的,

vc6对标准支持不太好,microsoft曾经承认过这个bug的:

FIX: getline Template Function Reads Extra Character
RESOLUTION
Modify the getline member function, which can be found in the following system
header file "string", as follows:
 else if (_Tr::eq((_E)_C, _D))
       {_Chg = true;
    //  _I.rdbuf()->snextc();   // Remove this line and add the line below.
        _I.rdbuf()->sbumpc();
         break; }
STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are
listed at the beginning of this article.
This problem was corrected in Microsoft Visual C++ .NET.
MORE INFORMATION
The following sample program demonstrates the bug: //test.cpp
#include <string>
#include <iostream>
int main () {
std::string s,s2;
std::getline(std::cin,s);
std::getline(std::cin,s2);
std::cout << s <<'\t'<< s2 << std::endl;
return 0;
}
//Actual Results:
Hello<Enter Key>
World<Enter Key>
<Enter Key>
Hello   World
//Expected Results:
Hello<Enter Key>
World<Enter Key>
Hello   World
--------------------------------------------------------------------------------
APPLIES TO
? The Standard C++ Library, when used with:
  Microsoft Visual C++ 6.0 Enterprise Edition
  Microsoft Visual C++ 6.0 Professional Edition
  Microsoft Visual C++ 6.0 Standard Edition

【 在 starsun (小刚与微软 ) 的大作中提到: 】
: cin.getline(char *, int, char),读取由int字段指定长度的字符串,或读到char字段所
:
: 定的字符为止。
: 注意的是:getline()如果在遇到回车符也会结束的,不过它和get()不同的是它会把回车符
:
: 读进字符串中!
:
:
: 我记得我学的是这样的,不知各们同学有什么不同的意见.



☆   3  ──────────── 我是分割线 ─────────────────☆
发信人: jaly (が勒のせ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:08:50 2005

我在网上查了一下...好像vc6之后的版本没有了这个bug了...
唉..难道要我跳槽java ...
【 在 kaman 的大作中提到: 】
: 我记得getline不读的,
: vc6对标准支持不太好,microsoft曾经承认过这个bug的:
: FIX: getline Template Function Reads Extra Character
: RESOLUTION
: Modify the getline member function, which can be found in the following syst..
:  else if (_Tr::eq((_E)_C, _D))
:        {_Chg = true;
:     //  _I.rdbuf()->snextc();   // Remove this line and add the line below.
:         _I.rdbuf()->sbumpc();
:          break; }
: STATUS
: Microsoft has confirmed that this is a bug in the Microsoft products that ar..
: This problem was corrected in Microsoft Visual C++ .NET.
: MORE INFORMATION
: The following sample program demonstrates the bug: //test.cpp
: #include <string>
: #include <iostream>
: int main () {
: std::string s,s2;
: std::getline(std::cin,s);
: (以下引言省略...)



☆   4  ──────────── 我是分割线 ─────────────────☆
发信人: kaman (天外飛仙), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: 2005年12月25日16:09:12 星期天


- -

【 在 jaly (が勒のせ) 的大作中提到: 】
: 我在网上查了一下...好像vc6之后的版本没有了这个bug了...
: 唉..难道要我跳槽java ...
: 【 在 kaman 的大作中提到: 】
: : 我记得getline不读的,
: : vc6对标准支持不太好,microsoft曾经承认过这个bug的:
: : FIX: getline Template Function Reads Extra Character
: : RESOLUTION
: : Modify the getline member function, which can be found in the following syst
: :  else if (_Tr::eq((_E)_C, _D))
: :        {_Chg = true;
: .................(以下省略)



☆   5  ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:09:42 2005

对前面第一次输入两次回车符,第二次输入一次回车
我的看法是
getline()函数只保存一个回车符
第一次输入时把第一个回车符读进去了,第二个回车做为分隔
第二次输入时把第二个回车符读入字符中,遇到第三个回车符时将这两个回车符之间的字符
读入,因为第二个
回车符已被读入,所以第三个回车符做为分隔符并保留作为下一个字符读取

不知我这样说对不对~~~~~~~~~~~~我的理解是这样

【 在 starsun 的大作中提到: 】
: cin.getline(char *, int, char),读取由int字段指定长度的字符串,或读到char字段..
:
: 定的字符为止。
: 注意的是:getline()如果在遇到回车符也会结束的,不过它和get()不同的是它会把回车..
:
: 读进字符串中!
:
:
: 我记得我学的是这样的,不知各们同学有什么不同的意见.



☆   6  ──────────── 我是分割线 ─────────────────☆
发信人: Yeats (冬虫夏草||粉雪), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: 2005年12月25日16:09:49 星期天

= =||
因为编译器的问题而跳槽。。orz。。
【 在 jaly (が勒のせ) 的大作中提到: 】
: 我在网上查了一下...好像vc6之后的版本没有了这个bug了...
: 唉..难道要我跳槽java ...
: 【 在 kaman 的大作中提到: 】
: : 我记得getline不读的,
: : vc6对标准支持不太好,microsoft曾经承认过这个bug的:
: : FIX: getline Template Function Reads Extra Character
: : RESOLUTION
: : Modify the getline member function, which can be found in the following syst
: :  else if (_Tr::eq((_E)_C, _D))
: :        {_Chg = true;
: .................(以下省略)



☆   7  ──────────── 我是分割线 ─────────────────☆
发信人: jaly (が勒のせ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:12:34 2005

似乎是这样的...-_-!
bug..bug..bug..
【 在 bso 的大作中提到: 】
: 对前面第一次输入两次回车符,第二次输入一次回车
: 我的看法是
: getline()函数只保存一个回车符
: 第一次输入时把第一个回车符读进去了,第二个回车做为分隔
: 第二次输入时把第二个回车符读入字符中,遇到第三个回车符时将这两个回车符之间的?..
: 读入,因为第二个
: 回车符已被读入,所以第三个回车符做为分隔符并保留作为下一个字符读取
:
: 不知我这样说对不对~~~~~~~~~~~~我的理解是这样
:
: 【 在 starsun 的大作中提到: 】
: : cin.getline(char *, int, char),读取由int字段指定长度的字符串,或读到char字..
: :
: : 定的字符为止。
: : 注意的是:getline()如果在遇到回车符也会结束的,不过它和get()不同的是它会把回..
: :
: : 读进字符串中!
: :
: :
: : 我记得我学的是这样的,不知各们同学有什么不同的意见.



☆   8  ──────────── 我是分割线 ─────────────────☆
发信人: starsun (小刚与微软 ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:13:09 2005

嗯,看下面那个例子,如果运行结果是Holle      Word的话应该不读.呵呵.神奇.

【 在 kaman 的大作中提到: 】
: 我记得getline不读的,
: vc6对标准支持不太好,microsoft曾经承认过这个bug的:
: FIX: getline Template Function Reads Extra Character
: RESOLUTION
: Modify the getline member function, which can be found in the following syst..
:  else if (_Tr::eq((_E)_C, _D))
:        {_Chg = true;
:     //  _I.rdbuf()->snextc();   // Remove this line and add the line below.
:         _I.rdbuf()->sbumpc();
:          break; }
: STATUS
: Microsoft has confirmed that this is a bug in the Microsoft products that ar..
: This problem was corrected in Microsoft Visual C++ .NET.
: MORE INFORMATION
: The following sample program demonstrates the bug: //test.cpp
: #include <string>
: #include <iostream>
: int main () {
: std::string s,s2;
: std::getline(std::cin,s);
: (以下引言省略...)



☆   9  ──────────── 我是分割线 ─────────────────☆
发信人: starsun (小刚与微软 ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:18:20 2005

哈哈,那他有一天会跳回来地......
【 在 Yeats 的大作中提到: 】
: = =||
: 因为编译器的问题而跳槽。。orz。。
: 【 在 jaly (が勒のせ) 的大作中提到: 】
: : 我在网上查了一下...好像vc6之后的版本没有了这个bug了...
: : 唉..难道要我跳槽java ...
: : .................(以下省略)



☆  10  ──────────── 我是分割线 ─────────────────☆
发信人: starsun (小刚与微软 ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:19:05 2005

用get()不行吗?!
【 在 starsun 的大作中提到: 】
: 哈哈,那他有一天会跳回来地......
: 【 在 Yeats 的大作中提到: 】
: : = =||
: : 因为编译器的问题而跳槽。。orz。。



☆  11  ──────────── 我是分割线 ─────────────────☆
发信人: jaly (が勒のせ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:21:26 2005

一样的...估计是string类跟get. 之间的问题
【 在 starsun 的大作中提到: 】
: 用get()不行吗?!
: 【 在 starsun 的大作中提到: 】
: : 哈哈,那他有一天会跳回来地......



☆  12  ──────────── 我是分割线 ─────────────────☆
发信人: starsun (小刚与微软 ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:23:23 2005

那你跳吧....- -!
【 在 jaly 的大作中提到: 】
: 一样的...估计是string类跟get. 之间的问题
: 【 ?starsun 的大作中提到: 】
: : 用get()不行吗?!



☆  13  ──────────── 我是分割线 ─────────────────☆
发信人: crycz (打印刻录CD/DVD  javaLover), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: 2005年12月25日16:26:42 星期天

好啊...我多一个伴.虽然不认识你

【 在 jaly (が勒のせ) 的大作中提到: 】
: 我在网上查了一下...好像vc6之后的版本没有了这个bug了...
: 唉..难道要我跳槽java ...
: 【 在 kaman 的大作中提到: 】
: : 我记得getline不读的,
: : vc6对标准支持不太好,microsoft曾经承认过这个bug的:
: : FIX: getline Template Function Reads Extra Character
: : RESOLUTION
: : Modify the getline member function, which can be found in the following syst
: :  else if (_Tr::eq((_E)_C, _D))
: :        {_Chg = true;
: .................(以下省略)


☆  14  ──────────── 我是分割线 ─────────────────☆
发信人: jaly (が勒のせ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:43:07 2005

对 c++ 还是有点感情啊....
             有点放心它不下啊...     ^_^
【 在 starsun 的大作中提到: 】
: 那你跳吧....- -!
: 【 在 jaly 的大作中提到: 】
: : 一样的...估计是string类跟get. 之间的问题



☆  15  ──────────── 我是分割线 ─────────────────☆
发信人: jaly (が勒のせ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:43:44 2005

嗯..好的 ...我会学着双管齐下的..
【 在 crycz 的大作中提到: 】
: 好啊...我多一个伴.虽然不认识你
: 【 在 jaly (が勒のせ) 的大作中提到: 】
: : 我在网上查了一下...好像vc6之后的版本没有了这个bug了...
: : 唉..难道要我跳槽java ...
: : .................(以下省略)



☆  16  ──────────── 我是分割线 ─────────────────☆
发信人: Yeats (冬虫夏草||粉雪), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: 2005年12月25日16:45:05 星期天

宜精不宜广。。
【 在 jaly (が勒のせ) 的大作中提到: 】
: 嗯..好的 ...我会学着双管齐下的..
: 【 在 crycz 的大作中提到: 】
: : 好啊...我多一个伴.虽然不认识你
: : 【 在 jaly (が勒のせ) 的大作中提到: 】



☆  17  ──────────── 我是分割线 ─────────────────☆
发信人: crycz (打印刻录CD/DVD  javaLover), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: 2005年12月25日16:53:24 星期天

我不认为这样.
我认为精一种,了解多种.

现在找工作的笔试都是多种语言来的...
至少也要懂基础.到时你就会觉得我的话没错...

【 在 Yeats (冬虫夏草||粉雪) 的大作中提到: 】
: 宜精不宜广。。
: 【 在 jaly (が勒のせ) 的大作中提到: 】
: : 嗯..好的 ...我会学着双管齐下的..


☆  18  ──────────── 我是分割线 ─────────────────☆
发信人: jaly (が勒のせ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:54:52 2005

嗯...影响所见略同啊....哈哈..
  嗯嗯...就是这样了..
【 在 crycz 的大作中提到: 】
: 我不认为这样.
: 我认为精一种,了解多种.
: 现在找工作的笔试都是多种语言来的...
: 至少也要懂基础.
: 【 在 Yeats (冬虫夏草||粉雪) 的大作中提到: 】
: : 宜精不宜广。。



☆  19  ──────────── 我是分割线 ─────────────────☆
发信人: Yeats (冬虫夏草||粉雪), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: 2005年12月25日16:55:11 星期天

我只是不想打那么多字。。观点一样。。
【 在 crycz (打印刻录CD/DVD  javaLover) 的大作中提到: 】
: 我不认为这样.
: 我认为精一种,了解多种.
: 现在找工作的笔试都是多种语言来的...
: 至少也要懂基础.到时你就会觉得我的话没错...
: 【 在 Yeats (冬虫夏草||粉雪) 的大作中提到: 】
: : 宜精不宜广。。



☆  20  ──────────── 我是分割线 ─────────────────☆
发信人: Epyon (一物降一物), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 16:56:03 2005

好象是读n-1个,好象是提取了换行或指定分隔符,但是不放入你所说的字符串,null终止

【 在 starsun 的大作中提到: 】
: cin.getline(char *, int, char),读取由int字段指定长度的字符串,或读到char字段..
:
: 定的字符为止。
: 注意的是:getline()如果在遇到回车符也会结束的,不过它和get()不同的是它会把回车..
:
: 读进字符串中!
:
:
: 我记得我学的是这样的,不知各们同学有什么不同的意见.



☆  21  ──────────── 我是分割线 ─────────────────☆
发信人: jaly (が勒のせ), 信区: Program
标  题: Re: 讨论:getline()的用法...
时  间: Sun Dec 25 17:03:57 2005

不是null 中止吧....应该是 \n
【 在 Epyon 的大作中提到: 】
: 好象是读n-1个,好象是提取了换行或指定分隔符,但是不放入你所说的字符串,null?..
:
: 【 在 starsun 的大作中提到: 】
: : cin.getline(char *, int, char),读取由int字段指定长度的字符串,或读到char字..
: :
: : 定的字符为止。
: : 注意的是:getline()如果在遇到回车符也会结束的,不过它和get()不同的是它会把回..
: :
: : 读进字符串中!
: :
: :
: : 我记得我学的是这样的,不知各们同学有什么不同的意见.


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店