Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 7
1

Какой способ конкатенации строк лучше использовать?

19.12.2016, 14:48. Показов 1150. Ответов 3

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток.
Я запутался с объединением строк на С++. Несколько классов про string запутывают как-то.
Вот например есть такой способ конкатенации строк:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
using namespace std;
 
int main(){
    setlocale(LC_ALL,"Russian");
    string a = "AAA ";
    string b = "BBB ";
    
    b += a;
    cout << b << endl;
    system("PAUSE");
}
А есть такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//пример использования функции strcat
 
#include <iostream>
#include <cstring>
 
int main()
{
  char str[100];
  strcpy( str, "Эти " );                // скопировать строку "Эти" в str
 
  // добавить к строке str строку, передаваемую во втором параметре
  strcat( str, "строки "          );
  strcat( str, "объединены "    );
  strcat( str, "операцией "      );
  strcat( str, "конкатенации." );
 
  std::cout << str << std::endl;
  return 0;
}
Что лучше использовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2016, 14:48
Ответы с готовыми решениями:

Смысл const char* и о том, какой тип строк лучше использовать
Я никак не могу понять смысла const char*. Это строка в стиле C, я знаю. Но чем эта запись...

Какой способ работы с файлами лучше?
Мне известно по крайней мере три способа: 1 TStringList::LoadFromFile 2 std::ofstream 3 FILE...

Какой способ измерения времени лучше использовать для получения данных с comport?
Нужно получать время между измерениями с comport что лучше, использовать? Точность нужна до 0,01с

Использовать два модуля. Программа конкатенации двух строк. Одна в главном модуле, другая во вспомогательном.
Прочитал много книжек но сроки поджимают в инсте ребята помогите пожалуйста, научился скадывать...

3
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
19.12.2016, 14:58 2
Ca85, В первом случае это С++-way, во втором C-way. Если пишешь на С++, то тебе доступны оба варианта. Используй первый способ: string и operator+, так лучше.
1
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 7
19.12.2016, 15:00  [ТС] 3
Сенкс. Мне тоже += больше нравится. Лаконичнее.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
19.12.2016, 15:01 4
Цитата Сообщение от Ca85 Посмотреть сообщение
Что лучше использовать?
Первое. Потому что при каждом вызове strcat заново вычисляется длина строки идущей первым аргументом. А на это уходит время пропорциональное этой самой длине. std::string же просто помнит этот размер внутри себя. Плюс, std::string резиновый, в него и миллион символов влезет. А в char str[100] можно сунуть максимум сто символов. Единственное преимущество char str[100] - оно создается в стеке, тогда как std::string кидает данные в динамическую память. И в стеке выделить место быстрее. Вопрос только в том, чего у вас больше - выделений памяти или какой-то работы с ней.
1
19.12.2016, 15:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2016, 15:01
Помогаю со студенческими работами здесь

Какой способ лучше
Производятся вычисления в цикле, где в зависимости от условий подключаются или не подключаются...

Какой способ рисования в 2D лучше?
Приветствую! Захотел сделать свой контрол, нашел в интеренете аж целых 2 решение моей задачи. З...

Как лучше залить текстуру в массив? Какой формат текстуры лучше использовать?
Как лучше залить текстуру в массив? Какой формат текстуры лучше использовать?

Какой способ разгона процессора лучше?
Вопрос к знатокам оверлокерам, каким способом лучше разгонять процессор: при помощи множителя...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru