Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
java_user
1 / 1 / 3
Регистрация: 07.04.2016
Сообщений: 66
#1

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

26.06.2016, 12:22. Просмотров 445. Ответов 13
Метки нет (Все метки)

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 СС, но выводится на экран набор разных символов
http://www.cyberforum.ru/cpp-beginners/thread733268.html
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 12:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос При выводе на экран переменной string выводится набор левых символов (C++):

Возможно ли присвоить переменной типа string префикс 'L' при выводе
Возможно ли присвоить переменной типа string префикс 'L' при выводе? Если да,...

Тип string не выводится на экран
как мне сделать вывод переменной surname на русском языке,просто проблема в...

При выводе числа выводится #INF
В общем, задали написать программу вычисления кубического уравнения. В сети...

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

При выводе числа выводится #INF
может кто обьяснить где тут проблема? задача - есть два метода исчисления одна...

13
java_user
1 / 1 / 3
Регистрация: 07.04.2016
Сообщений: 66
26.06.2016, 12:25  [ТС] #2
А при попытке использовать cout для вывода
C++
1
cout << b;
Выводит ошибку:
Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует) ConsoleApplication38 c:\users\1\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 23
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
26.06.2016, 12:25 #3
C++
1
2
3
4
5
#include <string>
 
bin += (dec >> i) & 1 ? '1' : '0';
 
cout << bin;
1
java_user
1 / 1 / 3
Регистрация: 07.04.2016
Сообщений: 66
26.06.2016, 12:27  [ТС] #4
nmcf, ничего не изменилось, на экране набор символов. Использую Visual C++ 2015
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
26.06.2016, 12:32 #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;
}
1
DrOffset
7517 / 4513 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
26.06.2016, 12:33 #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;
}
1
java_user
1 / 1 / 3
Регистрация: 07.04.2016
Сообщений: 66
26.06.2016, 12:59  [ТС] #7
Спасибо, а почему при подобном выводе, пишет ошибку
C++
1
2
    string str = "1221";
    cout << str;
Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)
0
DrOffset
7517 / 4513 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
26.06.2016, 13:08 #8
java_user, #include <string> сделал?
1
java_user
1 / 1 / 3
Регистрация: 07.04.2016
Сообщений: 66
26.06.2016, 13:11  [ТС] #9
DrOffset,
C++
1
#include <string.h>
было, а в чем их отличие?)
0
DrOffset
7517 / 4513 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
26.06.2016, 13:14 #10
Цитата Сообщение от java_user Посмотреть сообщение
было, а в чем их отличие?)
#include <string.h> или, #include <сstring> - Это заголовочный файл стандартной библиотеки С. Там нет класса std::string, зато есть функции для работы с памятью и С-строками (массивы с терминальным нулем).
#include <string> - Это заголовочный файл стандартной библиотеки С++. Там находится класс std::string и связанные с ним функции, те же операторы ввода\вывода, std::getline и т.д.
0
java_user
1 / 1 / 3
Регистрация: 07.04.2016
Сообщений: 66
26.06.2016, 13:21  [ТС] #11
Теперь стоит задача, убрать лишние нули, до первой 1, т.е. сделать не 00000000000001010, а 1010 и т.п.

Добавлено через 7 минут
Нужно задать, чтобы цикл не 32 раза повторялся, а столько сколько разрядов в двоичном коде числа dec.
Как можно получить количество разрядов двоичного числа переменной dec ?
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
26.06.2016, 13:34 #12
Просто не выводи всю строку, а только часть с первой единицы.
1
java_user
1 / 1 / 3
Регистрация: 07.04.2016
Сообщений: 66
26.06.2016, 13:41  [ТС] #13
nmcf, подскажи пожалуйста как это сделать
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
26.06.2016, 13:48 #14
C++
1
cout << str.substr(str.find('1'));
1
26.06.2016, 13:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2016, 13:48
Привет! Вот еще темы с решениями:

Выводится мусор при выводе массива в обратном порядке
Дайте пожалуйста объяснение багу, высочившемуся у меня во время выполнения...

Считывание из файла в char - при выводе выводится лишнее
Считываю из файла в строку типа char, если у меня в строке меньше 16 символов,...

При выводе посредством cout() получается один и тот же набор цифр
Здравствуйте дорогие форумчане. У меня трабл. В независимости от того что я...

Ошибка при присвоении argv[1] переменной string. Как конвертировать к типу string?
&quot;call of an object of a class type without appropriate operator() or...


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

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

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