#include <iostream>
#include <string>
using namespace std;
void getLine(string ptr[]) {
for (int index = 0; index < 3; ++index) {
string line;
getline(cin, line);
ptr[index] = line;
}
}
int main() {
string ptr[3];
getLine(ptr);
for (int index = 0; index < 3; ++index) {
cout << ptr[index] << endl;
}
}
В вашем коде было несколько ошибок.Во-первых, вы не выделили достаточно места для вашего массива.Ваша длина должна быть длиной массива, а не индексом последнего элемента.Так что, если это 3 строки, это [3].
Далее, я бы не использовал char *, но вместо этого использовал бы строковый класс.См. Мой код.
В-третьих, ваши strlen вещи - ну, у вас есть массив указателей на случайные места в памяти, или, возможно, массив нулевых указателей.В любом случае, это неправильно.
Вы МОЖЕТЕ сделать что-то вроде этого:
char myStrings[3][1000];
А затем в своей getline используйте 1000 в качестве максимальной длины (возможно, 999 - я неиспользуйте getline в той форме, которую вы сделали).Это позволило бы выделить 3 символьных массива по 1000 байт каждый.
Но обычная вещь strlen просто не сработает, потому что вы не начинаете с каких-либо строк, из которых стрельба.