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

При выводе на экран переменной string выводится набор левых символов - C++

Восстановить пароль Регистрация
 
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 39
26.06.2016, 12:22     При выводе на экран переменной string выводится набор левых символов #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int s;
    string b;
    printf("DEC: ");
    scanf("%i", &s);
    for (int i = 31; i >= 0; i--)
    {
        s += (char)(((b >> i) & 1) + 48);
    }
    printf("BIN: %s", b);
    _getch();
    return 0;
}
Перевод из 10 СС в 2 СС, но выводится на экран набор разных символов
Изображения
 
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 39
26.06.2016, 12:25  [ТС]     При выводе на экран переменной string выводится набор левых символов #2
А при попытке использовать cout для вывода
C++
1
cout << b;
Выводит ошибку:
Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует) ConsoleApplication38 c:\users\1\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 23
nmcf
4304 / 3725 / 1255
Регистрация: 14.04.2014
Сообщений: 14,589
26.06.2016, 12:25     При выводе на экран переменной string выводится набор левых символов #3
C++
1
2
3
4
5
#include <string>
 
bin += (dec >> i) & 1 ? '1' : '0';
 
cout << bin;
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 39
26.06.2016, 12:27  [ТС]     При выводе на экран переменной string выводится набор левых символов #4
nmcf, ничего не изменилось, на экране набор символов. Использую Visual C++ 2015
nmcf
4304 / 3725 / 1255
Регистрация: 14.04.2014
Сообщений: 14,589
26.06.2016, 12:32     При выводе на экран переменной string выводится набор левых символов #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
using namespace std;
 
int main()
{
    int dec;
    string bin;
    printf("DEC: ");
    scanf("%i", &dec);
    for (int i = 31; i >= 0; i--)
    {
        bin += (dec >> i) & 1 ? '1' : '0';
    }
    cout << bin << endl;
    system("pause");
    return 0;
}
DrOffset
6456 / 3830 / 885
Регистрация: 30.01.2014
Сообщений: 6,627
26.06.2016, 12:33     При выводе на экран переменной string выводится набор левых символов #6
Цитата Сообщение от java_user Посмотреть сообщение
printf("BIN: %s", b);
printf не может и не должен корректно выводить содержимое объектов классов. Он работает только с POD.
C++
1
printf("BIN: %s", b.c_str());
А вообще в коде еще полно ошибок. Например, перепутаны b и s.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdio>
#include <string>
 
int main()
{
    int s;
    std::string b;
    printf("DEC: ");
    scanf("%i", &s);
    for (int i = 31; i >= 0; i--)
    {
        b += (char)(((s >> i) & 1) + '0');
    }
    printf("BIN: %s\n", b.c_str());
    return 0;
}
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 39
26.06.2016, 12:59  [ТС]     При выводе на экран переменной string выводится набор левых символов #7
Спасибо, а почему при подобном выводе, пишет ошибку
C++
1
2
    string str = "1221";
    cout << str;
Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)
DrOffset
6456 / 3830 / 885
Регистрация: 30.01.2014
Сообщений: 6,627
26.06.2016, 13:08     При выводе на экран переменной string выводится набор левых символов #8
java_user, #include <string> сделал?
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 39
26.06.2016, 13:11  [ТС]     При выводе на экран переменной string выводится набор левых символов #9
DrOffset,
C++
1
#include <string.h>
было, а в чем их отличие?)
DrOffset
6456 / 3830 / 885
Регистрация: 30.01.2014
Сообщений: 6,627
26.06.2016, 13:14     При выводе на экран переменной string выводится набор левых символов #10
Цитата Сообщение от java_user Посмотреть сообщение
было, а в чем их отличие?)
#include <string.h> или, #include <сstring> - Это заголовочный файл стандартной библиотеки С. Там нет класса std::string, зато есть функции для работы с памятью и С-строками (массивы с терминальным нулем).
#include <string> - Это заголовочный файл стандартной библиотеки С++. Там находится класс std::string и связанные с ним функции, те же операторы ввода\вывода, std::getline и т.д.
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 39
26.06.2016, 13:21  [ТС]     При выводе на экран переменной string выводится набор левых символов #11
Теперь стоит задача, убрать лишние нули, до первой 1, т.е. сделать не 00000000000001010, а 1010 и т.п.

Добавлено через 7 минут
Нужно задать, чтобы цикл не 32 раза повторялся, а столько сколько разрядов в двоичном коде числа dec.
Как можно получить количество разрядов двоичного числа переменной dec ?
nmcf
4304 / 3725 / 1255
Регистрация: 14.04.2014
Сообщений: 14,589
26.06.2016, 13:34     При выводе на экран переменной string выводится набор левых символов #12
Просто не выводи всю строку, а только часть с первой единицы.
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 39
26.06.2016, 13:41  [ТС]     При выводе на экран переменной string выводится набор левых символов #13
nmcf, подскажи пожалуйста как это сделать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2016, 13:48     При выводе на экран переменной string выводится набор левых символов
Еще ссылки по теме:

При выводе числа выводится #INF C++
C++ Возможно ли присвоить переменной типа string префикс 'L' при выводе
C++ При выводе посредством cout() получается один и тот же набор цифр

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

Или воспользуйтесь поиском по форуму:
nmcf
4304 / 3725 / 1255
Регистрация: 14.04.2014
Сообщений: 14,589
26.06.2016, 13:48     При выводе на экран переменной string выводится набор левых символов #14
C++
1
cout << str.substr(str.find('1'));
Yandex
Объявления
26.06.2016, 13:48     При выводе на экран переменной string выводится набор левых символов
Ответ Создать тему
Опции темы

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