Cin用于字符数组

时间:2015-03-10 05:38:44

标签: c++ arrays input

在C ++中,这是输入一系列字符的有效/有效方法吗? 如:

char abc[100]; 
cout<<"Enter your address:";  
cin>>abc;  

This说:

  

然而,cin提取总是将空格(空格,制表符,换行符......)视为终止所提取的值,因此提取字符串意味着始终提取单个单词,而不是短语或整个句子。

由于上面的语句是针对字符串而不是字符数组给出的,所以我很困惑 这段代码能正常工作吗?

注意:我使用的是TurboC ++

1 个答案:

答案 0 :(得分:2)

如果您只想读取非空白字符,可以使用:

char abc[100]; 
cout<<"Enter your address:";  
cin >> abc;  

然而,这是有风险的。如果非空白字符序列由100个或更多字符组成,则会遇到访问内存超出范围的问题,这将导致未定义的行为。

如果您想阅读换行符之前的所有内容,可以使用:

char abc[100]; 
cout<<"Enter your address:";  
cin.getline(abc, 100);  

这样做的另一个好处是它不会读取超过99个字符,从而节省了空终止符的最后一个空格。

有关istream::getline()的更多详情,请访问http://en.cppreference.com/w/cpp/io/basic_istream/getline