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

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

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

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

26.06.2016, 12:22. Просмотров 217. Ответов 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 СС, но выводится на экран набор разных символов
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 12:22     При выводе на экран переменной string выводится набор левых символов
Посмотрите здесь:

Почему при выводе в поток char* выводится весь массив символов? - C++
я немогу вот в чем разобраться есть : int main() { char v = "Fdasda"; char *p=v; cout << "\np=" << p; cout << "\n*p=" <<*p; ...

Возможно ли присвоить переменной типа string префикс 'L' при выводе - C++
Возможно ли присвоить переменной типа string префикс 'L' при выводе? Если да, то как. Проблема в том, что слово хранящееся в переменной...

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

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

Выводится мусор при выводе массива в обратном порядке - C++
Дайте пожалуйста объяснение багу, высочившемуся у меня во время выполнения следующего задания: вывести массив из n элементов в обратном...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 59
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
5240 / 4560 / 1532
Регистрация: 14.04.2014
Сообщений: 18,125
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
Сообщений: 59
26.06.2016, 12:27  [ТС]     При выводе на экран переменной string выводится набор левых символов #4
nmcf, ничего не изменилось, на экране набор символов. Использую Visual C++ 2015
nmcf
5240 / 4560 / 1532
Регистрация: 14.04.2014
Сообщений: 18,125
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
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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
Сообщений: 59
26.06.2016, 12:59  [ТС]     При выводе на экран переменной string выводится набор левых символов #7
Спасибо, а почему при подобном выводе, пишет ошибку
C++
1
2
    string str = "1221";
    cout << str;
Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
26.06.2016, 13:08     При выводе на экран переменной string выводится набор левых символов #8
java_user, #include <string> сделал?
java_user
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 59
26.06.2016, 13:11  [ТС]     При выводе на экран переменной string выводится набор левых символов #9
DrOffset,
C++
1
#include <string.h>
было, а в чем их отличие?)
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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
Сообщений: 59
26.06.2016, 13:21  [ТС]     При выводе на экран переменной string выводится набор левых символов #11
Теперь стоит задача, убрать лишние нули, до первой 1, т.е. сделать не 00000000000001010, а 1010 и т.п.

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

Ошибка компилятора при выводе string - C++
Stock::Stock(const char * co, int n, double pr) { cout&lt;&lt;&quot;Вызван конструктор для: &quot;&lt;&lt; co &lt;&lt; &quot;!\n&quot;; company = co; if(n &lt; 0) { ...

Ошибка при выводе строковой переменной - C++
Привет всем, сразу скажу, что в с++ я не очень. Но нужно начинать уже сейчас в нем разбираться, а то скоро начнется он у меня в универе....

Запись первых двух символов в переменной string в другую переменную - C++
Есть переменая типа string s = &quot;12345678&quot;; Мне нужно первые два символа присвоить другой переменой типа string потом вторые два, и так...

Ошибка при выводе символов - C++
Не отображается русскими буквами текст который я ввожу. Помогите, пожалуйста) #include &lt;iostream&gt; #include &lt;string&gt; #include...

Неожиданный результат при выводе значения переменной, несмотря на инкремент - C++
подскажите почему значения a и с начинаются с 1 а не с 2 стоит же &quot;++&quot; int a = 1; void f() { int b = 1; // инициализируется...


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

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

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