2013-06-05 7 views
1

Я столкнулся с этой позицией, где мне нужно создать динамическую строку пользовательского размера (поэтому я попытался использовать динамическую cstring).Создание динамического Cstring

char * S; 
int x; 

cin >> x; 

S = new char[x]; 

for (int i = 0; i < x; i++) { 
    S[i]=' ';  //trying to make it a string of spaces so I can fill it in later 
} 

при этом и выводит строку (cout << S;) я получаю х пробелы и некоторые случайные символы, как я решить эту проблему?

+5

Попробуйте добавить '' \ 0'' в конец строки. – austin

+1

Почему бы не использовать std :: string? Также CString - это класс, созданный Microsoft, char * - это то, что у вас есть. – olevegard

+1

@olevegard Я думаю, он хотел сказать «C string». – SevenBits

ответ

1

Расширение моего предыдущего комментария. Я думаю, вам нужно добавить нулевой символ в конец, так что std::cout знает, когда остановиться, иначе он просто попытается распечатать содержимое памяти, на которое указывает S.

char * S; 
int x; 
cin >> x; 
S = new char [x + 1]; // +1 for the null character 

int i; 
for (i=0; i<(x); i++) 
    S[i] = ' '; 

S[i] = '\0'; 
+0

спасибо @austin: D Я забыл про нулевой – Ezz

Смежные вопросы