This article has been dead for over three months
You
class LinkedString {
class Item {
public:
Item* previous;
Item* next;
char ch;
};
Item* data_begin;
Item* data;
Item* data_end;
int len;
public:
LinkedString() {
len = 0;
}
~LinkedString() {
if (len == 0) return;
Item* temp;
data = data_begin;
while (data != data_end) {
temp = data;
data = data->next;
delete temp;
}
delete data;
}
void add(char i) {
data = new Item;
if (len == 0) {
data_begin = data;
data_end = data;
} else {
data->previous = data_end;
data_end->next = data;
data_end = data_end->next;
}
data_end->ch = i;
len++;
}
void backspace() {
Item* temp = data_end;
data_end = data_end->previous;
delete temp;
len--;
}
char* get_string() {
char* string = new char[len+1];
char* string_begin = string;
data = data_begin;
for (int i = 0; i < len; i++) {
*string++ = data->ch;
data = data->next;
}
*string = 0;
return string_begin;
}
};
char* getline() {
LinkedString string;
int ch;
while ((ch = getch()) != 10) {
if (ch == 127) {
std::cout << "\b \b";
string.backspace();
} else {
string.add((char) ch);
std::cout << (char) ch;
}
}
std::cout << "\n";
return string.get_string();
}