Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
inversioner
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 8
#1

String, конкатенация и "необъявленные" строки - C++

14.07.2013, 03:03. Просмотров 395. Ответов 5
Метки нет (Все метки)

Доброго времени суток!
Во время написания простого примера (изучаю язык) наткнулся на проблему с конкатенацией строк:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string.h>
 
using namespace std;
 
int main()
{
    string text = "text";
 
    cout << "text2" + text;
    //ошибка, т.к. оператор + не умеет объединять массив из char и string
 
    cout << strcat("text2", text);
    //тоже ошибка: оператор почему-то оперирует не string, а указателями на char
}
Собственно, почему "необъявленные" строки (типа строки "text2" в коде выше) на самом деле имеют тип массива символьного типа, но не строки (string), а strcat требует аргументы типа вовсе не string, а указателя на char?
И что же делать, если нужно объединить строку и массив из char?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2013, 03:03     String, конкатенация и "необъявленные" строки
Посмотрите здесь:

Как избавиться от "deprecated conversion from string constant to ‘char*’" C++
Функция setlocale( LC_ALL,"Russian" ) и класс String C++
C++ Изменение отдельных символов в массиве "std::string"
Ошибка "неизвестный тип string" C++
Ошибка со string: "идентификатор "string" не определен" C++
Ошибка "string for array of chars is too long" C++
Проверяю, являются ли 4 строки стихом. "й" принимает за "и", тем самым принимает за слог C++
Найти причины и способы исправления ошибок в коде (пользовательский класс "String", перегрузка функций) C++
C++ Инициализация string с подключенной "тайной Страуструпа"
Разработка класса String, на основании которого можно создавать объекты типа "строка символов" C++
C++ Ошибка при быстрой сортировке файла: "string subscript out of range"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2452 / 1624 / 238
Регистрация: 24.11.2012
Сообщений: 3,999
14.07.2013, 03:24     String, конкатенация и "необъявленные" строки #2
Цитата Сообщение от inversioner Посмотреть сообщение
Собственно, почему "необъявленные" строки (типа строки "text2" в коде выше) на самом деле имеют тип массива символьного типа, но не строки (string), а strcat требует аргументы типа вовсе не string, а указателя на char?
Потому что это С++.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
// 1
std::string s = std::string("text2") + std::string("text1");
 
// 2
std::stringstream ss;
ss << "text1" << "text2";
std::string s = ss.str();
inversioner
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 8
14.07.2013, 03:34  [ТС]     String, конкатенация и "необъявленные" строки #3
Цитата Сообщение от 0x10 Посмотреть сообщение
std::string s = std::string("text2") + std::string("text1");
Студия говорит, что оператора +, работающего с операндами такого типа нет.
0x10
2452 / 1624 / 238
Регистрация: 24.11.2012
Сообщений: 3,999
14.07.2013, 03:38     String, конкатенация и "необъявленные" строки #4
Файл <string> подключен?
inversioner
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 8
14.07.2013, 03:52  [ТС]     String, конкатенация и "необъявленные" строки #5
Цитата Сообщение от 0x10 Посмотреть сообщение
Файл <string> подключен?
Подключён был string.h. Сейчас подключил string -- ошибки нет. Спасибо.
Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
14.07.2013, 07:46     String, конкатенация и "необъявленные" строки #6
Цитата Сообщение от inversioner Посмотреть сообщение
cout << "text2" + text;
//ошибка, т.к. оператор + не умеет объединять массив из char и string
Это тоже должно работать. У вас, наверное, из-за неправильного заголовочного файла нескомпилировалось.

http://www.cplusplus.com/reference/s...ing/operator+/
Yandex
Объявления
14.07.2013, 07:46     String, конкатенация и "необъявленные" строки
Ответ Создать тему
Опции темы

Текущее время: 03:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru