Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kavabunger
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 4
#1

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

15.02.2013, 02:56. Просмотров 427. Ответов 6
Метки нет (Все метки)

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

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
буду благодарен любой помощи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2013, 02:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос добавление цифры к строке (C++):

Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры - C++
Помогите пожалуйста с задачей ! срочно!! Необходимо написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести...

Найти все цифры в строке. каждую цифру напечатать в отдельной строке - C++
Помогите пожалуйста

Заменить цифры в строке на '*' - C++
Ввести с клавиатуры символьную строку. Длина строка не более 80 символов. Заменить все цифры, находящиется на нечетных позициях на символ...

Буквы и цифры в строке - C++
Как выбрать из строки только буквы и только цифры?

Отсортировать цифры в строке по убыванию - C++
Нужна программка для преобразования строки так, чтобы все цифры в ней были отсортированы по убыванию. За ранее благодарен.

Увеличить все цифры в строке вдвое - C++
3. Дана строка, содержащая цифры, увеличить все цифры в этой строке вдвое. :O_O: Помогите пожалуйста заранее спасибки:)))

6
xtorne21st
интересующийся
304 / 275 / 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;
}
0
kavabunger
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 4
15.02.2013, 03:25  [ТС] #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
Вы пытаетесь сконкатенировать строку string с интегральной переменной
я это понимаю, но у меня входные данные - строка и выходные тоже строка, потому менять тип не могу.
Пробовал sprintf, пробовал стримы, толку ноль, в вашем варианте получилось вот что
C++
1
2
00000000000000001111111111111111
11111110111111100011011000110101001101010011001100110101
а ведь вторая строка должна быть такой же как и первая...
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.02.2013, 03:40 #4
Попробуйте не со string а с массивом char, может поможет
0
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;
}
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.02.2013, 20:14 #6
Так и не понял что вы за хак мутите
0
kavabunger
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 4
15.02.2013, 20:49  [ТС] #7
xtorne21st, Это вебсокет сервер Конкретно эта функция отвечает за сборку отсылаемого пакета.
0
15.02.2013, 20:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2013, 20:49
Привет! Вот еще темы с ответами:

Во введенной строке удалить все цифры 0-9 - C++
пытался так // ConsoleApplication6.cpp: определяет точку входа для консольного приложения. // #include &lt;iostream&gt; #include...

Заменить в строке все цифры на пробелы - C++
Понимаю что я наверное дурак, но не могли бы помочь с программой на С++ Вводится строка. Заменить в строке все цифры на пробелы В...

добавление пробелов в строке - C++
здравствуйте! Постановка задачи. Дан текст, состоящий из слов, которые раз-делены пробелами и знаками препинания: точкой, запятой,...

Определить, имеется ли в строке три цифры подряд - C++
Определить, имеется ли в строке три цифры подряд.


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

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

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