Ввод строки символов с использованием массивов и указателей - PullRequest
0 голосов
/ 12 февраля 2010

Хорошо, ребята, я очень новичок и пытаюсь ввести строку в массив символов с помощью указателей ... и затем отобразить то, что я написал.

Есть две вещи, о которых я хочу спросить. Во-первых, если я не хочу указывать размер для массива и просто хочу, чтобы он расширялся и содержал всю введенную мной строку ... как это? И через секунду после того, как я введу строку и покажу ее ... она не будет содержать пробел между словами ... например, если я ввел "я люблю печенье" ... он будет отображаться как "ilovecookies" .. Так как это решить?

Вот мой маленький код ...

 #include <iostream>

 using namespace std;

 int main()
{

    char *strP , str[100] ;
    strP = str ;

    for(int i =0 ; i<10 ; i++) cin >> *(strP+i) ; 

    for(int i =0 ; i<10 ; i++) cout << *(strP+i) ;


     return 0;
}

извините за мои глупые вопросы, я новичок в этом языке, как сказано, и не хочу пропустить вещи, прежде чем двигаться дальше.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 12 февраля 2010

1) Вам нужно либо использовать строковый объект, либо new, если вы хотите динамически изменить размер вашей строки.

2) Он не содержит пробелов, потому что cin читает по одному слову за раз. Есть несколько способов обойти это. Я бы использовал переключение на использование scanf и printf вместо cin и cout. Или, как сказал Вивин, вы можете использовать getchar ()

РЕДАКТИРОВАТЬ: грамматика

1 голос
/ 12 февраля 2010

Массивы не могут изменить свой размер. Вы должны использовать std::vector<char>, или даже лучше для строк, которые вы используете std::string.

1 голос
/ 12 февраля 2010

cin всегда останавливается, когда встречается с пробелом. Если вы вводите символ за символом, попробуйте использовать getchar().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...