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也能获取不可见字符。
1. 因为你include了iostream, iostream include了string
赞同楼上
using namespace std