getline和get一样吗?

May*_*kar 1 c++

好的,我的问题很简单..

我们都知道,是多么糟糕的getsC&因此建议是使用fgets.

现在在C++我们使用std::string sstd::getline(std::cin, s)..现在我的问题是,getline()具有相同的边界检查问题,如gets()..

如果是,则char input[100]&cin.getline(input,sizeof(input));将用于char数组但是使用字符串时我可以写这个吗?

std::string s;&cin.getline(s, s.capacity());...这是合适的还是我可以写的其他东西?

Ben*_*ley 5

不,getline没有同样的问题gets.该函数具有对字符串的引用,因此可以调用字符串sizecapacity成员函数以进行边界检查.但是,它不需要这样做,因为它还可以访问字符串的大小调整成员函数,例如push_back,resize或者operator+=,它将自动处理边界检查,必要时重新分配.