2014-12-08 4 views
0

Мне было просто интересно узнать, как создать массив строк. Я ищу, чтобы создать массив из 10 строк, и каждая строка может содержать 20 символов.C++, массив строк

#include <iostream> 
int main() 
{ 
    char a[10] , str[20]; 
    for (int x = 0 ; x<10 ; x++) 
    { 
    for (int y = 0 ;y<20; y++) 
     { 
     cout<<"String:"; 
     cin>>str[y]; 
     a[x]=str[y]; 
     } 
    } 
    for (int j = 0 ; j<10 ; j++) 
    cout<<a[j]<<endl; 
    return 0; 
} 

Новичок в C++ с открытым умом :)

ответ

0

Что вы делаете, это более C-подход.
Во всяком случае:

char strings[10][20]; 

//Accessing each string 
for(int i = 0; i < 10; i++) 
{ 
    //Accessing each character 
    for(int j = 0; j < 20; j++) 
    { 
     char character = strings[i][j]; 
    } 
} 

В C++ вы предпочитаете использовать:

std::string strings[10]; 

Или лучший вариант это:

std::vector<std::string> strings(10); 

в C++ 11 вы можете перебрать последний случай например:

for(auto singleString : strings) 
{ 

} 
+0

- переменная строк в вашей программе 2D-массив? Я ноб в программировании, просто ищу дополнительную информацию. –

+0

В первой цитате кода это всего лишь 2D-массив типов «char». –

4

Как насчет вместо этого использовать

std::vector<std::string> my_strings(10); // vector of 10 strings 

У вас будет гораздо легче так, чем статический размером char массивов ,

Затем вы получаете все возможности контейнера std::vector, включая динамический размер.

Вы также получите все приятные функции класса std::string.

0

В порядке предпочтения:

вектор из 10 строк:

std::vector<std::string> aVector(10); 

Массив из 10 строк:

std::string anArray[10]; 

Если вы действительно хотите использовать нулем C строки:

typedef char MyString[21]; // 20 + 1, for the terminating zero 
MyString arrayOfThem[10]; 

or, более загадочный вариант

char anArray[10][21]; 
Смежные вопросы