在C ++中,这是输入一系列字符的有效/有效方法吗? 如:
char abc[100];
cout<<"Enter your address:";
cin>>abc;
This说:
然而,cin提取总是将空格(空格,制表符,换行符......)视为终止所提取的值,因此提取字符串意味着始终提取单个单词,而不是短语或整个句子。
由于上面的语句是针对字符串而不是字符数组给出的,所以我很困惑 这段代码能正常工作吗?
注意:我使用的是TurboC ++
答案 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。