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

Конкатенация строки-константы и int - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
30.09.2012, 12:11     Конкатенация строки-константы и int #1
Есть константа "sorting.exe " и int i. Нужно объединить их в один char, чтобы он выглядел так: "sorting.exe i".

Как это сделать? Пробовал так:
C++
1
2
itoa(i, buf, 10);
strcat(strcpy(cmd, "sorting.exe "), buf);
Но тогда в cmd пишется что-то ужасное после sorting.exe.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2012, 12:11     Конкатенация строки-константы и int
Посмотрите здесь:

Функции float average(int arrray[],int from,int to) C++
Если обе строки хранят целые числа, то выводится сумма чисел, в противном случае – конкатенация строк C++
C++ Функции потока: Если строки хранят числа, то выводится сумма, иначе – конкатенация строк
C++ Конкатенация + int в строку + открытие множества файлов
String, конкатенация и "необъявленные" строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.09.2012, 12:20     Конкатенация строки-константы и int #2
C++
1
2
3
4
5
6
7
#include <sstream>
//...
std::stringstream ss;
int var;
//...
ss << "sorting.exe " << var;
std::cout << ss.str().c_str();
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
30.09.2012, 12:23  [ТС]     Конкатенация строки-константы и int #3
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
3
4
5
6
7
#include <sstream>
//...
std::stringstream ss;
int var;
//...
ss << "sorting.exe " << var;
std::cout << ss.str().c_str();
Это в билдере работает? Я просил действия с char, а не с каким-то другим типом. Это связано с особенностью использования строки в дальнейших функциях. Этот stringstream в char не приводится.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.09.2012, 12:24     Конкатенация строки-константы и int #4
Цитата Сообщение от Gooman Посмотреть сообщение
Это в билдере работает?
зависит от того что у вас уже написано и как вы напишите этот код)
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
30.09.2012, 12:28  [ТС]     Конкатенация строки-константы и int #5
Цитата Сообщение от Jupiter Посмотреть сообщение
зависит от того что у вас уже написано и как вы напишите этот код)
Оно-то работает (ошибку не выдает при компиляции), но в другой функции необходим char, a не stringstream. И преобразовать никак нельзя.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.09.2012, 12:32     Конкатенация строки-константы и int #6
str() - возвращает std::string
c_str() - возвращает const char* на строку
только аккуратнее, нужно следить за временем жизни этой строки
C++
1
std::cout << ss.str().c_str();
заканчивается после вывода строки
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
30.09.2012, 12:33     Конкатенация строки-константы и int #7
C++
1
2
3
4
5
int i = 10;
const char* s = "sorting.exe";
 
char dest[256];
sprintf(dest, "%s %d", s, i);
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
30.09.2012, 12:33     Конкатенация строки-константы и int #8
Вот так можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream> 
using namespace std;
int main()
{
  char buffer[10]; 
  char str[20] = "sorting.exe ";
  int i = 1; 
 
  itoa(i, buffer, 10); 
 
  strcat(str, buffer); 
 
  cout << str << endl;
}
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
30.09.2012, 12:38  [ТС]     Конкатенация строки-константы и int #9
Цитата Сообщение от David Sylva Посмотреть сообщение
Вот так можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream> 
using namespace std;
int main()
{
  char buffer[10]; 
  char str[20] = "sorting.exe ";
  int i = 1; 
 
  itoa(i, buffer, 10); 
 
  strcat(str, buffer); 
 
  cout << str << endl;
}
Не работает
В str записывается "sorting.exe 1\0\0\0\0\0\0\0" . А мне нужно только "sorting.exe 1". Потому как я это пишу в командную строку, а 1 - параметр командной строки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2012, 13:14     Конкатенация строки-константы и int
Еще ссылки по теме:

C++ Конкатенация строк: Зачем строки создаются в динамической памяти?
C++ Определить константы по аргументам командной строки
Перевод переменной из int в char и конкатенация строк C++

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

Или воспользуйтесь поиском по форуму:
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
30.09.2012, 13:14     Конкатенация строки-константы и int #10
попробуй написать char buffer[2];
Yandex
Объявления
30.09.2012, 13:14     Конкатенация строки-константы и int
Ответ Создать тему
Опции темы

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