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

Перевод чисел в строку и прибавление к этой строке другой строки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
31.01.2012, 14:10     Перевод чисел в строку и прибавление к этой строке другой строки #1
Есть 2 числа. Сначала мы переводим эти числа в char' ы. Потом нужно создать строку, которая будет состоять из "число"+"число"+"константа".
Обьясните, что не так, пожалуйста:
C++
1
2
3
4
5
6
7
int a,b;
char A,B,*RESULT;
 
    A=a+'0';
    B=b+'0';
 
    RESULT=A+B+"xyz";
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2012, 14:10     Перевод чисел в строку и прибавление к этой строке другой строки
Посмотрите здесь:

Строки! Замена в строке всех вхождений другой строки C++
C++ Из файла считать третью строку и посчитать количество слов в этой строке
Ввести строку символов, если ее длина кратна 2, посчитать количество цифр в этой строке. C++
Найти строку в другой строке C++
Если в строке есть элемент, равный среднему арифметическому элементов этой строки, то вставьте после него строку, состоящую из этих элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BRcr
 Аватар для BRcr
4003 / 2292 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
31.01.2012, 14:27     Перевод чисел в строку и прибавление к этой строке другой строки #2
Вы используете оператор + на типах char и const char* - как предлагаете компилятору складывать указатель и целочисленное значение? В худшем случае получился бы непонятно какой адрес в указателе result, но компилятор вам такого не позволит.
Лучше всего используйте функции работы со строками, не помню названий - их много в стандартных библиотеках.
Чтобы вам понять смысл нужных вам действий, вот простенький код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int a,b;
char A,B,RESULT[10];
 
        A=a+'0';
        B=b+'0';
 
        RESULT[0]=A;
        RESULT[1]=B;
        RESULT[2]='x';
        RESULT[3]='y';
        RESULT[4]='z';
        RESULT[5]='\0';
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.01.2012, 14:33     Перевод чисел в строку и прибавление к этой строке другой строки #3
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
 
int main()
{
   int a = 5, b = 10;
   std::string s(boost::lexical_cast<std::string> (a) + boost::lexical_cast<std::string> (b) + "xyz");
   std::cout << s << std::endl;
}
http://liveworkspace.org/code/b3c04b...e001d7708c9d01

Добавлено через 35 секунд
Цитата Сообщение от BRcr Посмотреть сообщение
A=a+'0';
Это не число.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.01.2012, 15:32     Перевод чисел в строку и прибавление к этой строке другой строки #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main(void){
    int a = 13, b = 69;
    const char * abc = "abc";
    char bufA[32], bufB[32], buf[BUFSIZ];
 
    sprintf(bufA, "%d", a);
    sprintf(bufB, "%d", b);
    printf("%s\n", strcat(strcat(strcpy(buf, bufA), bufB), abc));
 
    return 0;
}
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
31.01.2012, 19:57  [ТС]     Перевод чисел в строку и прибавление к этой строке другой строки #5
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main(void){
    int a = 13, b = 69;
    const char * abc = "abc";
    char bufA[32], bufB[32], buf[BUFSIZ];
 
    sprintf(bufA, "%d", a);
    sprintf(bufB, "%d", b);
    printf("%s\n", strcat(strcat(strcpy(buf, bufA), bufB), abc));
 
    return 0;
}
В VC++ 2008 не работает, а в Dev-cpp - работает..никто не знает, почему?
В VC++ так и остается "abc"

Добавлено через 9 минут
Откомпилируйте, кто то у себя, пожалуйста (это не ап, это то, чего я хочу, спасибо большое, кто сделает)
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.01.2012, 19:59     Перевод чисел в строку и прибавление к этой строке другой строки #6
Цитата Сообщение от AncinetHero Посмотреть сообщение
Откомпилируйте, кто то у себя, пожалуйста
Вот http://liveworkspace.org/code/62e850...e8e0cb07bab36a
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
31.01.2012, 20:00  [ТС]     Перевод чисел в строку и прибавление к этой строке другой строки #7
И что, это не VC++
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.01.2012, 20:10     Перевод чисел в строку и прибавление к этой строке другой строки #8
Цитата Сообщение от AncinetHero Посмотреть сообщение
это не VC++
В MSVS 10 аналогично.
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
31.01.2012, 20:50  [ТС]     Перевод чисел в строку и прибавление к этой строке другой строки #9
Странно...
Вот даже точный код:
C++
1
2
3
4
5
6
7
8
const char* RESULT=".mymap";
    char bufA[32], bufB[32], buf[BUFSIZ];
 
    sprintf(bufA, "%d", a);
    sprintf(bufB, "%d", b);
    strcat(strcat(strcpy(buf, bufA), bufB), RESULT);
 
    std::ofstream OUT(RESULT);
Может библиотеки другие подключаю?

C++
1
2
3
4
5
#include "stdafx.h" //на всякий случай тоже о_О
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
Добавлено через 5 минут
go, насчет вашего примера, заголовочный файл lexical_cast нужно отдельно качать?

Добавлено через 7 минут
Проверьте, пожалуйста, пример

Добавлено через 16 минут
Раз все правильно, почему не работает?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.01.2012, 21:19     Перевод чисел в строку и прибавление к этой строке другой строки #10
Цитата Сообщение от AncinetHero Посмотреть сообщение
std::ofstream OUT(RESULT);
И чего вы ждёте? Склеенная строка в buf будет, RESULT каким был, таким и остался...

Кстати, во я намудрил, всё проще
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(void){
    int a = 13, b = 69;
    const char * abc = "abc";
    char buf[BUFSIZ];
 
    sprintf(buf, "%d%d%s", a, b, abc);
    printf("%s\n", buf);
 
    return 0;
}
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
31.01.2012, 21:20     Перевод чисел в строку и прибавление к этой строке другой строки #11
AncinetHero,
C++
1
#include<cstdio>
нужно ету библиотеку юзать
и вместо
C++
1
sprintf()
лучше
C++
1
snprintf()
она проверяет размер буфера!

для
C++
1
lexical_cast
нужно скачивать библиотеки буст

также можно через
C++
1
itoa()
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
31.01.2012, 21:41     Перевод чисел в строку и прибавление к этой строке другой строки #12
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
 
int main()
{
    int a = 111, b = 222;
    std::string result = std::to_string(a) + std::to_string(b) + "xyz";    
    std::cout << result << "\n";
}
http://liveworkspace.org/code/c9202b...8a45c4f66455cf
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2012, 23:48     Перевод чисел в строку и прибавление к этой строке другой строки
Еще ссылки по теме:

C++ Если в строке есть элемент, равный среднему арифметическому элементов этой строки, то вставьте после него строку, состоящую из этих элементов
C++ Разделить элементы k-й строки на диагональный элемент, расположенный в этой строке
Найти строку, содержащую минимальный элемент матрицы, и поменять в этой строке элементы 1-го и 4-го столбца C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.01.2012, 23:48     Перевод чисел в строку и прибавление к этой строке другой строки #13
Цитата Сообщение от vetal10 Посмотреть сообщение
лучше
snprintf()
В принципе - да, так безопаснее. Но, учитывая, что строка будет содержать два числа + 3-4 буквы, размера BUFSIZ хватит с огромным запасом. По этому возня с вычислением длинны чисел в символах - по сути лишние заморочки.

Цитата Сообщение от vetal10 Посмотреть сообщение
также можно через
itoa()
А вот это мелкомягкое чудо стандартом не предусмотрено, а по тому лучше про него забыть.
Yandex
Объявления
31.01.2012, 23:48     Перевод чисел в строку и прибавление к этой строке другой строки
Ответ Создать тему
Опции темы

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