Как лучше всего объявить строку и работать с ней:
string name, char* name или char name[10], например
Если коротко, то по-моему в большенстве случаев лучше использовать std::string, далее подробнее:
У массива символов есть определенные недостатки:
new char[]) необходимо всегда помнить о необходимости освободить памятьchar s[100]) строка всегда будет занимать в память 100 байт, даже если хранимая строка будет длинной 10 байтКласс std::string лишен этих недостатков: нам не надо задумываться об освобождении памяти (она будет освобождена автоматически деструктором), не надо заранее резервировать побольше памяти в стеке для длинных строк и потом следить за выходом за границу массива, а длина хранимой в объекте строки хранится в объектае и доступна мгновенно.
Кроме того хочется добавить про отличие char[] и char*: при объявлении строки
char array_string[] = "string";
в стеке будет создан массив символов, в который из строкового литерала (хранящегося, кстати, где-то совершенно в другом месте) будет скопирована строка "string". Вы можете писать в этот массив, изменять его содержимое.
Однако при объявлении
char *pointer_string = "string";
В стеке будет выделена память под указатель на char, в который будет записан адрес строкового литерала. Изменять память строкового литерала крайне нежелательно.
Кроме того банальная sizeof(array_string) вернет Вам количество символов в строке, когда как sizeof(pointer_string) вернет размер указателя.
string name;
Лучший выбор.
char *name1;
Для С но можно и в С++. Я бы вообще не советовал опасная вещь.
char name2[N];
Хороший вариант для strcpy_s и прочего(но смысл если в string всё это есть)
string s1,s2;
s1="HELLO";
s2="WORLD";
cout<< s1+" "+s2<<endl;
s1=s2+"!";
if(s1==s2)
cout<<"error"<<endl;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей