You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++实现文本转二进制功能时如何处理空格字符的转换问题

问题原因
  • 你当前使用cin >> plaintext读取输入时,C++默认的流读取规则会在遇到空格、制表符、换行符等空白字符时直接终止读取,因此空格本身和空格后的所有内容根本没有被存入plaintext变量中,自然无法完成空格的二进制转换。
修复方案
  1. 把输入读取逻辑替换为getline(cin, plaintext),该函数可以读取整行输入内容,包括其中的所有空格字符,直到遇到换行符才停止读取。
  2. 原有二进制转换逻辑无需修改,空格字符的ASCII码为32,使用bitset<8>转换后会自动输出00100000,符合需求。

如果你的代码中之前有其他cin >>操作,缓冲区会残留一个换行符,会导致getline直接读入空行,这种情况可以在调用getline前加一行cin.ignore()清空缓冲区残留的换行即可。

修复后的完整代码
#include <iostream>
#include <string>
#include <bitset>
using namespace std;

int main(){
    cout << "Enter plaintext: " << endl;
    string plaintext;
    // 替换为getline读取整行,保留空格
    getline(cin, plaintext);
    
    for(int i=0; i < plaintext.length(); i++){
        bitset<8> plain(plaintext[i]);
        cout << plaintext[i] << " " << plain << endl;
        plaintext[i] &= 0b11111111;
        bitset<8> 1st_enc(plaintext[i]);
        cout << 1st_enc << endl;
    }

    cout << "word:" << plaintext << endl;

    return 0;
}

内容的提问来源于stack exchange,提问作者rookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:15:06