ВУЗ:
Составители:
Рубрика:
59
Замечание. Следующий код воспринимается компилятором как
ошибочный.
string str;
str="Programming " + " C++";
cout<<"\n str = "<<str;
Хотя проблема, в каком-то смысле, надуманная – можно просто слить
строки, передвинув кавычки, – укажем ещѐ одно решение (раскрывающее
объектную природу этого вопроса).
string str;
str=string("Programming ") + " C++";
cout<<"\n str = "<<str;
Здесь был вызван конструктор класса string и создан неименованный
объект этого класса. Хотя старый синтаксис приведения типа
string str;
str=(string)"Programming " + " C++";
также даѐт выход из ситуации, но не раскрывает, почему проблема возникла.
На самом деле, код
s3=s1+s2
означает
s3.operator = (s1.operator +=(s2));
т. е. является вызовом перегруженных функций.
Пример. Замена части строки операцией replace(n,m,s), где n –
позиция в строке, с которой производится замена, m – количество
заменяемых символов, а s – замещающая строка. В примере замещающий
текст равен "abcd" – эти 4 символа будут вставлены с 5 позиции вместо 2
символов строки str.
// Замена части строки
string str("0123456789");
cout<<"\n str="<<str;
str.replace(5,2,"abcd");
cout<<"\n str="<<str;
Замечание. Следующий код воспринимается компилятором как ошибочный. string str; str="Programming " + " C++"; cout<<"\n str = "<
Страницы
- « первая
- ‹ предыдущая
- …
- 57
- 58
- 59
- 60
- 61
- …
- следующая ›
- последняя »