2015-04-11 6 views
0
Output is not correct.Every line miss its first character 

Теперь, когда я вхожу размер массива, а затем введенное значение каждого index.Output не будет должным образом показано, на 2-й, 3-й и 4-й строке вывода первого символа ввода отсутствуетСтроковый массив в C++

#include <iostream> 
#include <iomanip> 
#include<string> 

using namespace std; 

int main() 
{ 
    int size; 
    cout<<"Enter the size of array :"; 
    cin>>size; 
    string name[size]; 
    for(int i=0;i<size;i++) 
    { 
     cout<<endl<<"Enter string at "<<i<<" index of array :"; 
     cin.ignore(); 
     getline(cin,name[i]); 

    } 
    //out put of array 
    cout<<"OutPut of array "<<endl; 
    for(int i=0 ; i<size ;i++) 
    { 
     cout<<name[i]<<endl; 
    } 

} 
+1

Это недопустимо C++. Размеры массива должны быть постоянными. –

+1

'string name [size];' Это не стандартный C++. Вместо этого используйте 'std :: vector имя (размер);' – PaulMcKenzie

ответ

1

Возьмите cin.ignore() из цикла. Таким образом:

cin.ignore(); 
for(int i=0;i<size;i++) 
{ 
    cout<<endl<<"Enter string at "<<i<<" index of array :"; 

    getline(cin,name[i]); 

} 

Ранее cin.ignore() выполнялась каждый раз в цикле, и вынужден игнорируя каждый первый символ строки. Модифицированный код: http://ideone.com/5S1yVv

Смежные вопросы