My Code example:
char* array = new char[10];
char* str;
int j = 0;
MyClass(char* input){ //input = sentence columns terminated by '\n'
str = new char[strlen(input)];
for(int i=0; i<strlen(input); i++){
if (input[i] == '\n'){ //look for end of line
str[i] = '\0'; //add \0 Terminator for char[]
array[j] = &(str[i]); //store address of sentence beginning in array
j++;
}
else{
str[i] = input[i];
}
}
}
Как сохранить адрес в массиве. Поэтому я могу получить начальный адрес предложения по номеру. Я создал решение с вектором, хранящим мои предложения как объекты char *. Но должен быть путь без векторов ?!Как хранить адреса в массиве - C++?
EDIT:
Это мое решение.
#include <iostream>
using namespace std;
class Pointer{
public:
char** array = new char*[10];
char* str;
char* buffer;
int j = 1;
Pointer(char* input){
str = new char[strlen(input)];
array[0] = str;
for (int i = 0; i < strlen(input); i++){
if (input[i] == '\n'){
str[i] = '\0';
array[j] = &(str[i]) + sizeof(char);
j++;
}
else{
str[i] = input[i];
}
}
}
void output(int i){
buffer = array[i];
cout<<buffer;
}
};
Благодарим за помощь! :)
У вас есть возможная ошибка переполнения, так как 'strlen' дает длину строки * без * терминатора. –
Что касается вашей проблемы, 'array' не является массивом указателей, это массив символов *. –
Почему вы не хотите использовать векторы? – emlai