Пытаясь понять больше о bitset в C ++ - PullRequest
0 голосов
/ 04 марта 2020

Я пытался понять больше об использовании набора битов, чтобы преобразовать строку в двоичную, а затем перенести ее в другую строку, а не просто прямо. Я всегда получаю ошибку исключения «Необработанное исключение в 0x773D3DB2 C ++ исключение: std :: invalid_argument в ячейке памяти 0x006FF800.» При использовании Visual Studio 2017 могу ли я знать, почему?

#include <string>
#include <bitset>
#include <sstream>
#include <iostream>

using namespace std;



int main()
{

   std::string hello = "C";
   std::string yellow;
   for (auto character : hello)
   {
    yellow += std::bitset<7>(hello).to_string();
    cout << yellow;
    return 0;
   }

}

1 Ответ

0 голосов
/ 04 марта 2020

Вы виновны в том, что не включили предупреждения для вашего компилятора, или используете компилятор, не способный предупредить вас, что переменная character не используется в вашем l oop.

Change

yellow += std::bitset<7>(hello).to_string();

до

yellow += std::bitset<7>(character).to_string();

Вывод:

1000011

Также обратите внимание, что вы на самом деле не l oop, потому что ваш л oop return s на первой итерации. Я предполагаю, что к этому моменту ваш пример кода прошел несколько итераций проб и ошибок ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...