2014-02-06 56 views
0

我想输入一个数字,并根据该数字,用户将不得不输入x次的数量。没有匹配的函数getline C++

例如

3 //how many the user wants 
192 231 2 3 
22192 2 1 23 
2831 3 23 1 

我试着这样做,但它口口声声说为getline

int* x = NULL; 
int numbers; 
cin >> numbers; 
x = new int[numbers] 

for (int i=0;i<numbers;i++) 
{ 
    std::getline(std::cin, numbers) 
    x[i] = numbers 
} 
+0

有一些引人注目的伟大的原因,你不能用'的std ::矢量'? –

+0

那么,你是否想阅读3个('数字')的整数行,3个整数或总是4个整数行的数字?另外:你每次都会覆盖循环边界,这不是一个好主意。 – Xarn

回答

1

你绝对不想使用std::getline,因为它看起来不像是你想要的一串数字,而是数字本身。

你想要的是按数字读取数字,所以使用你在numbers中读取的相同的东西,但不要在numbers中再次读取它。 (因为你正在使用它的循环)

总之,你想要什么的近似值是这样的:

int how_many; 
std::vector<int> numbers; 
std::cin >> how_many; 
for (int i = 0; i < how_many; i++){ 
    int temp; 
    std::cin >> temp; 
    numbers.push_back(temp); 
} 
+0

我想这样做,而不使用矢量,但指针 – Kara

+0

@Kara然后继续像你已经做的那样初始化'x',用'std :: cin >> x [i]'来读取。 – Xarn

3

没有匹配的功能,则对getline的第二个参数的类型为std::string

+0

有没有什么办法可以做到这一点,而不是一个字符串? – Kara

+0

@Kara:您可以查看文档并使用任何可用的过载。 http://en.cppreference.com/w/cpp/string/basic_string/getline –

+0

@Kara你已经想出了如何在第3行中提取一个“int”。但是你不应该使用'numbers'作为你的int '因为你的'for'循环取决于它。 –