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

добавление цифры к строке - C++

Восстановить пароль Регистрация
 
kavabunger
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 4
15.02.2013, 02:56     добавление цифры к строке #1
Всем добрый вечер, пишу простую программу в личных целях, все было хорошо, пока не стал вопрос конкатенации строки с беззнаковым коротким числом. Вот программа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <bitset>
 
int main(){
    
    std::string str_data;
    unsigned short sise = 65535;
    
    str_data  = 0xfe;
    str_data += 0xfe;
    str_data += sise;
 
    std::cout << std::bitset<32>(sise) << std::endl;
    
    for(int i = 0; i !=str_data.length(); i++)
        std::cout << std::bitset<8>(str_data[i]);
    
    return 0;
}
первая и вторая строки различаются, а мне необходимо чтобы они были одинаковы. Я понимаю что в строку пишется только 1 октет данных (8 бит) но не могу понять почему...

компилю под 64 битным g++ версии 4.7.2
буду благодарен любой помощи.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.02.2013, 03:09     добавление цифры к строке #2
Цитата Сообщение от kavabunger Посмотреть сообщение
Всем добрый вечер, пишу простую программу в личных целях, все было хорошо, пока не стал вопрос конкатенации строки с беззнаковым коротким числом. Вот программа:
Вы пытаетесь сконкатенировать строку string с интегральной переменной, к сожалению в классе string такого метода нет. Как вариант можно воспользоваться функцией sprintf для преобразования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string>
#include <bitset>
#include <cstdio>
 
int main(){
    
    std::string str_data;
    char val[80];
    unsigned short sise = 65535;
 
    sprintf(val, "%d", sise);
    
    str_data  = 0xfe;
    str_data += 0xfe;
    str_data += val;
 
    std::cout << std::bitset<32>(sise) << std::endl;
    
    for(int i = 0; i !=str_data.length(); i++)
        std::cout << std::bitset<8>(str_data[i]);
    
    return 0;
}
kavabunger
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 4
15.02.2013, 03:25  [ТС]     добавление цифры к строке #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
Вы пытаетесь сконкатенировать строку string с интегральной переменной
я это понимаю, но у меня входные данные - строка и выходные тоже строка, потому менять тип не могу.
Пробовал sprintf, пробовал стримы, толку ноль, в вашем варианте получилось вот что
C++
1
2
00000000000000001111111111111111
11111110111111100011011000110101001101010011001100110101
а ведь вторая строка должна быть такой же как и первая...
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.02.2013, 03:40     добавление цифры к строке #4
Попробуйте не со string а с массивом char, может поможет
kavabunger
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 4
15.02.2013, 16:08  [ТС]     добавление цифры к строке #5
Цитата Сообщение от kavabunger Посмотреть сообщение
а ведь вторая строка должна быть такой же как и первая...
ошибка, я имел ввиду что длина строк должна быть одинаковая и последние 16 бит в ней.

Добавлено через 2 минуты
Цитата Сообщение от xtorne21st Посмотреть сообщение
Попробуйте не со string а с массивом char, может поможет
К сожалению не могу менять тип данных.

Есть идея перевести unsigned short в два hex числа и последовательно приконкатенировать их к строке, но к сожалению моих знаний на это не хватит. Даже намека на мысли нет как это реализовать.

Добавлено через 12 часов 17 минут
В общем сам решил проблему

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <string>
#include <bitset>
 
int main(){
    
    std::string str_data;
    size_t sise = 356;
    
    unsigned char b[2];
    b[0] = sise & 0xff;
    b[1] = (sise >> 8) & 0xff;
    
    str_data  = 0xff;
    str_data += 0xfe;
    str_data += b[1];
    str_data += b[0];
 
    std::cout << std::bitset<32>(sise) << std::endl;
    
    for(int i = 0; i !=str_data.length(); i++)
        std::cout << std::bitset<8>(str_data[i]);
    
    
    return 0;
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.02.2013, 20:14     добавление цифры к строке #6
Так и не понял что вы за хак мутите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2013, 20:49     добавление цифры к строке
Еще ссылки по теме:

C++ Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры
Выделить цифры в строке после символа амперсанд C++
C++ Вывести цифры, буквы и разделители, находящиеся в строке

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

Или воспользуйтесь поиском по форуму:
kavabunger
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 4
15.02.2013, 20:49  [ТС]     добавление цифры к строке #7
xtorne21st, Это вебсокет сервер Конкретно эта функция отвечает за сборку отсылаемого пакета.
Yandex
Объявления
15.02.2013, 20:49     добавление цифры к строке
Ответ Создать тему
Опции темы

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