首页新闻找找看学习计划

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

0
[已解决问题] 解决于 2016-12-21 10:30
 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main() {
 7     int num;
 8     cin >> num;
 9     vector<string> vec;
10     for (int i = 0; i < num; ++i) {
11         string string1;
12         //cin >> string1;
13         getline(cin, string1);
14         vec.push_back(string1);
15     }
16     for (auto item : vec)
17         cout << item << endl;
18     return 0;
19 }

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也能获取不可见字符。

let_go的主页 let_go | 菜鸟二级 | 园豆:202
提问于:2016-08-29 22:17
< >
分享
最佳答案
0

1. 因为你include了iostream, iostream include了string

奖励园豆:5
egmkang | 初学一级 |园豆:-734 | 2016-09-04 19:56

赞同楼上

Google-boy | 园豆:200 (初学一级) | 2016-10-19 21:39
其他回答(1)
0

using namespace std

沧海一杰 | 园豆:28 (初学一级) | 2016-08-30 11:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册