C++中不include<string>,为什么也能定义string 对象

#include <iostream>

#include <vector>


using namespace std;


int main() {

    int num;

    cin >> num;

    vector<string> vec;

    for (int i = 0; i < num; ++i) {

        string string1;

        //cin >> string1;

        getline(cin, string1);

        vec.push_back(string1);

    }

    for (auto item : vec)

        cout << item << endl;

    return 0;

}

1)例如,这段代码,我没有#include<string>, 却能定义string string1,这是为什么?

2)为什么输入的字符串个数是num-1,而不是num 

问题补充:                        

经测试,是因为cin自动忽略回车等不可见字符。那么在输入字符串时,会把回车符也当成字符串存入vec[0],导致可见字符串个数少1.

而cin.get(),getchar()就能取得这样的不可见字符,所以在cin  >> num;之后加上cin.get()或getchar(),便可获取缓冲区的回车键。

或者利用scanf("%d", &num), scanf也能获取不可见字符。


鸿蒙传说
浏览 811回答 2
2回答

Cats萌萌

&nbsp;因为你include了iostream, iostream include了string

慕沐林林

using namespace std
打开App,查看更多内容
随时随地看视频慕课网APP