Я использовал указатель/массив **char
для хранения списка значений символов.C++ возвращающий адрес памяти, а не значение
У меня есть способ хранения значений, но мой метод для получения этих значений не был таким успешным.
Это мой метод, который устанавливает значения ...
char **names;
char *input_name;
int studentNameSize;
void Students::setStudentNames()
{
names = new char*[studentNameSize];
for(int i=0; i<studentNameSize; i++)
{
names[i] = new char[60];
cout << "Input name" << i << ": \n";
cin >> input_name;
strcpy(names[i],input_name);
cout << names[i] << "\n";
}
}
Это мой метод, и он возвращает только размер памяти, а не фактические значения. Она возвращает 0x(size of the array
, т.е. 0x03
вместо того что-то вроде Bob; Charles; Mike
const char** Students::getStudentNames()
{
for(int i=0; i<this->studentNameSize; i++)
{
return this->names[i];
}
}
К сожалению, я новичок в C++, и мне нужна помощь с friend ostream& operator<<
. В основном я знаю, как выводить в файл сейчас, но я не понимаю, как использовать метод friend ostream& operator<<
. У меня есть что-то вроде этого, но я действительно потерял, как я могу выводить файл таким образом.
ostream& operator<< (ostream& ostream, const Students& students)
{
os << students.getStudentNames();
return os;
}
Вы понимаете, что 'return', well ... *** возвращает *** из функции? Если вы возвращаетесь в цикл for, вы не будете «возвращать массив». Вместо этого вы вернете первый элемент, а затем функция завершит выполнение. Кроме того, в C++ используйте 'std :: vector' для массива строк. –
Ваш вопрос, кажется, внезапно превращается в другой вопрос на полпути. Что происходит? –
@LightnessRacesinOrbit, что происходит, очевидно, что OP не имеет представления об основных принципах языка, поэтому он не может с пользой и четко сформулировать свою проблему/вопрос. –