我有一個很奇怪的問題。 即時通訊正在做的是即時通訊嘗試將字符串中的8位二進制數字轉換爲十進制數字(字符串也是) 在代碼結束時我輸出二進制字符串和十進制字符串,但是當我運行時,我只成功看到二進制字符串,但不是小數串...C++我不能cout一個字符串,而我成功cout另一個字符串
繼承人我的代碼:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
void bintodec(string bin);
int main()
{
string bin="";
bintodec(bin);
return 0;
}
void bintodec(string bin)
{
int temp;
int temp_a;
int temp_b;
string dec;
cout << "Enter the binary number: ";
cin >> bin;
temp = 128*(bin[0]-48) + 64*(bin[1]-48) + 32*(bin[2]-48) + 16*(bin[3]-48) + 8*(bin[4]-48) + 4*(bin[5]-48) + 2*(bin[6]-48) + (bin[7]-48);
temp_a = temp%10;
temp = (temp - temp_a)/10;
temp_b = temp%10;
temp = (temp - temp_b)/10;
dec[2]=temp_a+48;
dec[1]=temp_b+48;
dec[0]=temp+48;
dec[3]='\0';
cout << endl << bin << " in decimal is: " << dec << endl;
}
,這裏是運行結果:
輸入的二進制數:10101010
10101010十進制是:
「is」後應該有我的十進制數;然而,什麼都沒有。我試圖cout dec [0] dec [1]和dec [2]單獨和它的工作,但是當我cout整個dec,我每次都失敗...
有誰能告訴我我的問題在哪裏?我認爲我的代碼出了問題,但我可以弄明白...
在盲目開始寫入不存在的元素之前,您是否考慮過爲'dec'字符串分配*空格*?一個簡單的'push_back()'調用正確的順序可以解決你的問題(我不建議解決這個問題,因爲你已經編寫了它,但這不是問題的關鍵)。 – WhozCraig
'dec.length()'爲零。對dec [N]的所有賦值都是緩衝區溢出,表現出未定義的行爲。 –
爲什麼你的函數需要一個參數,按值,然後在使用該值之前覆蓋它? –