只是一个简单的问题。 我想收到一些整数并把它放到一个数组中,但我不知道它的大小,因为它是由用户给出的 输入预计如下:1 2 3 4 5
#include <iostream>
using namespace std;
int main()
{
int *contain;
int y;
int i=0;
char c;
while(true)
{
cin>>contain[i];
i++;
c=getchar();
if(c=='\n')
break;
}
}
答案 0 :(得分:7)
将std::vector
与std::istream_iterator
一起使用。这样你就不需要事先知道尺寸了。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main() {
// Input
vector<int> data(istream_iterator<int>(cin), {});
// Output
for (auto i : data)
cout << i << endl;
// Output 2: suggested by alfC
copy(data.begin(), data.end(), ostream_iterator<int>(cout, " "));
return 0;
}
输入
1 2 3 4 5
输出
1
2
3
4
5
1 2 3 4 5
见 Ideone
答案 1 :(得分:3)
使用std::vector
。
让你开始的示范性例子,它将读取数字并将它们存储到vecotr中,直到读取0(它也将存储在矢量中):
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector;
int myint;
std::cout << "Please enter some integers (enter 0 to end):\n";
do {
std::cin >> myint;
myvector.push_back (myint);
} while (myint);
std::cout << "myvector stores " << int(myvector.size()) << " numbers.\n";
return 0;
}
输出:
Please enter some integers (enter 0 to end):
1 2 3 4 5 0
myvector stores 6 numbers.
在类似C语言的代码中,您需要使用realloc()
作为示例,并在每次到达新数字时将大小增加1(非常低效)。