Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 8
1

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

14.07.2013, 03:03. Просмотров 575. Ответов 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?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2013, 03:03
Ответы с готовыми решениями:

Калькулятор для работы с знаками "+" "-" "/" "*" через string без приоритетов
Нужно написать калькулятор для работы с знаками &quot;+&quot; &quot;-&quot; &quot;/&quot; &quot;*&quot; через string. Приоритеты действий...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Функция isspace и тип string: Не существует подходящей функции преобразования из "std::string" в "int"
Добрый день! Я только начинаю изучать язык c++ по книге &quot;Язык программирования С++. Базовый курс...

Error c2440 "невозможно преобразовать "std::string" в "std::string *" "
class file { public: string file_name; ... } int main() { file File, *r; r...

5
3237 / 2045 / 350
Регистрация: 24.11.2012
Сообщений: 4,894
14.07.2013, 03:24 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();
1
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 8
14.07.2013, 03:34  [ТС] 3
Цитата Сообщение от 0x10 Посмотреть сообщение
std::string s = std::string("text2") + std::string("text1");
Студия говорит, что оператора +, работающего с операндами такого типа нет.
0
3237 / 2045 / 350
Регистрация: 24.11.2012
Сообщений: 4,894
14.07.2013, 03:38 4
Файл <string> подключен?
0
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 8
14.07.2013, 03:52  [ТС] 5
Цитата Сообщение от 0x10 Посмотреть сообщение
Файл <string> подключен?
Подключён был string.h. Сейчас подключил string -- ошибки нет. Спасибо.
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
14.07.2013, 07:46 6
Цитата Сообщение от inversioner Посмотреть сообщение
cout << "text2" + text;
//ошибка, т.к. оператор + не умеет объединять массив из char и string
Это тоже должно работать. У вас, наверное, из-за неправильного заголовочного файла нескомпилировалось.

http://www.cplusplus.com/refer... operator+/
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2013, 07:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Ошибки в выводе типа if (string != "0") printf("%s, ", string)
Имеется класс &quot;почтовый адрес&quot;, поля - string и int. Необходимо сделать так, чтобы при печати...

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

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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