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

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

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

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

14.07.2013, 03:03. Просмотров 406. Ответов 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, конкатенация и "необъявленные" строки
Посмотрите здесь:

В чём разница между возвратом "string" и "const string&" & - C++
class test { public: test(const string&amp; text) { this-&gt;text = text; } string getText() { return text;

Ошибка со string: "идентификатор "string" не определен" - C++
Пытаюсь объявить переменную static string stt = &quot;d&quot;; но в студии вылазиет ошибка что идентификатор &quot;string&quot; не определен, что делать? ...

Что такое "широкие" и "узкие" С-строки - C++
Гуглила, и не нашла более-менее нормального ответа на вопрос: &quot;Что же такое &quot;широкие&quot; и &quot;узкие&quot; С-строки. Если приведете пример - вообще...

Записать из строки все буква "А" "а" в файл - C++
Записать из заданной строки все буквы А а в файл. Плз если можно срочно)) Буду очень благодарен)) Желательно на языке для новичков

Проверяю, являются ли 4 строки стихом. "й" принимает за "и", тем самым принимает за слог - C++
Суть программы: банальная проверка на то, являются ли 4 строки стишком. Метод решения задачи: равное кол-во слогов и одинаковые последние...

Как избавиться от "deprecated conversion from string constant to ‘char*’" - C++
Здравствуйте. У меня компилятор пишет: _.cpp:15: warning: deprecated conversion from string constant to ‘char*’ _.cpp:16:...

Функция setlocale( LC_ALL,"Russian" ) и класс String - C++
У меня есть класс и головная функция этого класса. Переменные типа стринг я могу водить в консоли, ну как только я подключаю функцию...

Изменение отдельных символов в массиве "std::string" - C++
Добрых времени суток, форумчане! Я тут решил переписать свой криптовальщик с GML на C++ и у меня возникла следующая проблема: мне нужно в...

Ошибка при быстрой сортировке файла: "string subscript out of range" - C++
В файле input.txt содержатся сведения о группе студентов в формате: номер группы; запись о каждом студенте группы содержит следующие...

Инициализация string с подключенной "тайной Страуструпа" - C++
Приложил картинки, где видна моя небольшая программа новичка, при компилировании которой вылазит вот такая вот ошибка. После подключения...

Ошибка "string for array of chars is too long" - C++
const int Width = 12; const int Height = 10; char Mounth = {&quot;Январь&quot;, &quot;Февраль&quot;, &quot;Март&quot;,...

Найти причины и способы исправления ошибок в коде (пользовательский класс "String", перегрузка функций) - C++
Не пойму почему этот код не работает...Подскажите что не так,пожалуйста. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstring&gt;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
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
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
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
509 / 461 / 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, конкатенация и "необъявленные" строки
Ответ Создать тему
Опции темы

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