我使用允許將任何類型(int,double,float,char)轉換爲字符串的代碼。我測試了該程序並選擇了char
作爲類型值。將字符串轉換爲字符,空格字符未正確轉換
stringstream ss;
string s;
char c = '3';
ss << c;
ss >> s;
cout << "CHAR" << endl;
bitset<8> bs2((char) c);
for(int i = (int) bs2.size(); i >= 0; i--)
cout << bs2[i] << " ";
cout << endl;
bitset<8> bs1((char) s.c_str()[0]);
cout << "STRING" << endl;
for(int i = (int) bs1.size(); i >= 0; i--)
cout << bs1[i] << " ";
cout << endl;
輸出是
CHAR
0 0 0 0 0 0 0 1 1
STRING
0 0 0 0 0 0 0 1 1
但我發現一個奇怪的事情。我設置了char c = ' '
並且該值未正確轉換。
CHAR
0 0 0 1 0 0 0 0 0
STRING
0 0 0 0 0 0 0 0 0
我找不到解釋和我做錯了什麼。
難道是提取操作符忽略空格? – 2012-01-07 21:13:16
嗯,好問題。比如何將任何類型轉換爲字符串和字符串爲任何類型?你有什麼建議嗎? – 2012-01-07 21:15:03
你是否確定這是你的真實代碼?你應該得到一個「索引超出範圍」的錯誤,因爲你從'bs2.size()'開始,這是超出界限的,而不是'bs2.size() - 1' – 2012-01-07 21:18:02