ASCII码对照表||ios_base::binary | ios_base::in

本文详细介绍了ASCII码的二进制、十进制及十六进制表示,并列举了对应的字符及其含义。此外,还提供了常用键盘按键的虚拟键码,便于了解按键与系统识别之间的关系。

Bin               Dec        Hex             缩写/字符                                      解释 

0000 0000    0          00             NUL(null)                                      空字符    
0000 0001    1          01             SOH(start of handing)                  标题开始  
0000 0010    2          02             STX(start of text)                          正文开始  
0000 0011    3          03             ETX(end of text)                          正文结束
0000 0100    4          04             EOT(end oftransmission)            传输结束  
0000 0101    5          05             ENQ(enquiry)                              请求  
0000 0110    6          06             ACK(acknowledge)                      收到通知  
0000 0111    7          07             BEL(bell)                                      响铃
0000 1000    8          08             BS(backspace)                            退格  
0000 1001    9          09             HT(horizontal tab)                        水平制表符  
0000 1010    10        0A             LF(NL line feed, newline)             换行键  
0000 1011    11        0B             VT(verticaltab)                            垂直制表符  
0000 1100    12        0C             FF(NP form feed, new page)         换页键  
0000 1101    13        0D             CR(carriagereturn)                      回车键
0000 1110    14        0E             SO(shiftout)                                不用切换  
0000 1111    15        0F             SI(shiftin)                                    启用切换  
0001 0000    16        10             DLE(data linkescape)                  数据链路转义  
0001 0001    17        11             DC1(device control1)                  设备控制1  
0001 0010    18        12             DC2(device control 2)                  设备控制2  
0001 0011    19        13             DC3(device control3)                  设备控制3  
0001 0100    20        14             DC4(device control4)                  设备控制4  
0001 0101    21        15             NAK(negative acknowledge)         拒绝接收  
0001 0110    22        16             SYN(synchronousidle)                同步空闲  
0001 0111    23        17             ETB(end of trans.block)              传输块结束  
0001 1000    24        18             CAN(cancel)                                取消
0001 1001    25        19             EM(end ofmedium)                      介质中断  
0001 1010    26        1A             SUB(substitute)                            替补  
0001 1011    27        1B             ESC(escape)                                溢出  
0001 1100    28        1C             FS(fileseparator)                        文件分割符  
0001 1101    29        1D             GS(groupseparator)                    分组符  
0001 1110    30         1E            RS (recordseparator)                  记录分离符  
0001 1111    31        1F             US(unitseparator)                        单元分隔符  

0010 0000    32        20             空格
0010 0001    33        21             !
0010 0010     34        22            "
0010 0011    35        23             #
0010 0100    36        24             $
0010 0101    37        25             %
0010 0110    38        26            &
0010 0111    39        27            "
0010 1000     40        28             (
0010 1001    41        29             )
0010 1010    42        2A             *
0010 1011    43        2B             +
0010 1100    44        2C             ,
0010 1101    45        2D             -
0010 1110    46        2E             .
0010 1111    47        2F             /
0011 0000    48        30             0
0011 0001    49        31             1
0011 0010    50        32             2
0011 0011    51        33             3
0011 0100    52        34             4
0011 0101    53        35             5
0011 0110    54        36             6
0011 0111    55        37             7
0011 1000    56        38             8
0011 1001    57        39             9
0011 1010    58        3A             :
0011 1011    59        3B             ;
0011 1100    60        3C             <
0011 1101    61        3D             =
0011 1110    62        3E             >
0011 1111    63        3F             ?
0100 0000    64        40             @

0100 0001    65        41             A
0100 0010    66        42             B
0100 0011    67        43             C
0100 0100    68        44             D
0100 0101    69        45             E
0100 0110    70        46             F
0100 0111    71        47             G
0100 1000    72        48             H
0100 1001    73        49             I
0100 1010    74        4A             J
0100 1011    75        4B             K
0100 1100    76        4C             L
0100 1101    77        4D             M
0100 1110    78        4E             N
0100 1111    79        4F             O
0101 0000    80        50             P
0101 0001    81        51             Q
0101 0010    82        52             R
0101 0011    83        53             S
0101 0100    84        54             T
0101 0101    85        55             U
0101 0110    86        56             V
0101 0111    87        57             W
0101 1000    88        58             X
0101 1001    89        59             Y
0101 1010    90        5A             Z
0101 1011    91        5B             [
0101 1100    92         5C            \
0101 1101    93        5D             ]
0101 1110    94        5E             ^
0101 1111    95        5F             _
0110 0000    96        60             `

0110 0001    97        61             a
0110 0010    98         62            b
0110 0011    99        63             c
0110 0100     100      64             d
0110 0101     101      65             e
0110 0110     102      66             f
0110 0111     103      67             g
0110 1000     104      68             h
0110 1001     105      69             i
0110 1010     106      6A             j
0110 1011     107      6B             k
0110 1100     108      6C             l
0110 1101     109      6D             m
0110 1110     110      6E             n
0110 1111     111      6F             o
0111 0000     112      70             p
0111 0001     113      71             q
0111 0010     114      72             r
0111 0011     115      73             s
0111 0100     116      74             t
0111 0101     117      75             u
0111 0110     118      76             v
0111 0111     119      77             w
0111 1000     120      78             x
0111 1001     121      79             y
0111 1010     122      7A             z
0111 1011     123      7B             {
0111 1100     124      7C             |
0111 1101     125      7D             }
0111 1110     126      7E            ~  

0111 1111     127      7F             DEL(delete)                                删除  
ESC键          VK_ESCAPE (27)
回车键:       VK_RETURN (13)
TAB键:       VK_TAB (9)
Caps Lock键: VK_CAPITAL (20)
Shift键:         VK_SHIFT()
Ctrl键:        VK_CONTROL (17)
Alt键:         VK_MENU (18)
空格键:        VK_SPACE (/32)
退格键:        VK_BACK (8)
左徽标键: VK_LWIN (91)
右徽标键:   VK_LWIN (92)
鼠标右键快捷键:VK_APPS (93)
Insert键:        VK_INSERT (45)
Home键:        VK_HOME (36)
Page Up:       VK_PRIOR (33)
PageDown: VK_NEXT (34)
End键:         VK_END (35)
Delete键:       VK_DELETE (46)
方向键(←):    VK_LEFT (37)
方向键(↑):    VK_UP (38)
方向键(→):    VK_RIGHT (39)
方向键(↓):    VK_DOWN (40)
F1键:            VK_F1 (112)
F2键:            VK_F2 (113)
F3键:            VK_F3 (114)
F4键:            VK_F4 (115)
F5键:            VK_F5 (116)
F6键:            VK_F6 (117)
F7键:            VK_F7 (118)
F8键:            VK_F8 (119)
F9键:            VK_F9 (120)
F10键:          VK_F10 (121)
F11键:          VK_F11 (122)
F12键:         VK_F12 (123)
Num Lock键: VK_NUMLOCK (144)
小键盘0:       VK_NUMPAD0 (96)
小键盘1:        VK_NUMPAD0 (97)
小键盘2:        VK_NUMPAD0 (98)
小键盘3:        VK_NUMPAD0 (99)
小键盘4:       VK_NUMPAD0 (100)
小键盘5:       VK_NUMPAD0 (101)
小键盘6:        VK_NUMPAD0 (102)
小键盘7:        VK_NUMPAD0 (103)
小键盘8:        VK_NUMPAD0 (104)
小键盘9:       VK_NUMPAD0 (105)
小键盘.:        VK_DECIMAL (110)
小键盘*:        VK_MULTIPLY (106)
小键盘+:        VK_MULTIPLY (107)
小键盘-:        VK_SUBTRACT (109)
小键盘/:        VK_DIVIDE (111)
Pause Break键: VK_PAUSE (19)
Scroll Lock键: VK_SCROLL (145)

 

<think>好的,用户想了解C++中ofstream构造函数的参数意义以及二进制模式下的文件操作用法。首先,我需要回顾一下相关的知识,确保自己理解正确。 首先,ofstream是用于文件输出的类,继承自ostream。构造函数中的参数包括文件名和打开模式。打开模式是ios_base中的枚举值,比如out、binary等。用户提到的模式是ios_base::out | ios_base::binary,这表示以输出和二进制模式打开文件。 接下来,需要解释各个模式的作用。ios_base::out是默认的写入模式,而binary模式则告诉程序不要进行任何字符转换,比如换行符的处理。在文本模式下,写入'\n'可能会被转换成平台特定的换行符(比如Windows中的\r\n),而二进制模式会保持原样。这点很重要,尤其是在跨平台操作时。 然后,用户可能想知道如何正确使用这些模式。例如,当同时使用多个模式时,需要用按位或操作符组合它们,比如ios::out | ios::binary。需要强调这里用的是按位或,而不是逻辑或,因为这些标志位通常是位掩。 另外,可能需要提到文件打开时的其他模式,比如app、trunc等,以及它们的组合使用。例如,默认情况下,ofstream打开文件时会清空内容,除非指定了app模式。这点用户可能会遇到问题,需要说明清楚。 关于二进制模式的具体应用,比如读写结构体或二进制数据时,必须使用二进制模式以避免数据损坏。例如,使用write函数直接写入内存中的数据,这时候用文本模式可能会导致问题。可以举一个例子,比如写入一个整数,二进制模式会直接写入字节,而文本模式可能会进行一些转换,但实际对于数值类型可能影响不大,但结构体中如果有特殊字符就会有影响。 还需要注意错误处理,比如文件是否成功打开。通常在创建ofstream对象后,应该检查is_open()方法,确保文件正确打开后再进行操作。 可能用户还会混淆ifstream和ofstream的用法,需要简要区分两者的不同,ifstream用于输入,而ofstream用于输出。同时,fstream可以同时处理输入输出,但模式需要明确指定。 最后,结合用户提供的引用内容,引用[1]和[2]提到了模式的使用方式,按位或组合多个模式。引用[4]提到了write和read函数,说明在文件流中使用这些方法进行二进制读写。因此,在回答中需要引用这些内容来支持解释,确保信息的准确性。 现在,需要将以上思考整理成一个结构清晰的回答,分点解释构造函数的参数,二进制模式的作用,示例代,以及常见问题。同时,生成相关问题,帮助用户进一步学习。</think>### C++ `ofstream` 构造函数参数详解及二进制模式文件操作 #### 1. `ofstream` 构造函数参数解析 `ofstream` 构造函数接受两个参数: - **文件名**:需写入的文件路径(字符串类型)。 - **打开模式**:由 `ios_base` 枚举值组合而成,通过 **按位或** `|` 操作符连接[^1][^2]。 常用模式标志: - `ios_base::out`:**默认模式**,以写入方式打开文件。若文件存在则清空内容,不存在则新建[^4]。 - `ios_base::binary`:以二进制模式操作文件,避免字符转换(如换行符处理)[^2]。 - `ios_base::app`:追加模式,写入数据时保留原有内容并在末尾添加新内容。 - `ios_base::trunc`:若文件存在,清空内容后再写入(与 `out` 默认行为相同)。 #### 2. 二进制模式的作用 在 **文本模式** 下,文件流会根据平台自动转换换行符(如 Windows 将 `\n` 转为 `\r\n`)。 在 **二进制模式** 下,数据会按原始字节直接读写,**无任何转换**,适用于非文本文件(如图片、视频)或需要精确控制字节的场景[^4]。 #### 3. 示例代 ##### 写入二进制数据 ```cpp #include <fstream> #include <iostream> struct Data { int id; double value; }; int main() { Data data{42, 3.14}; // 以二进制模式写入(覆盖原有内容) std::ofstream ofs("data.bin", std::ios_base::out | std::ios_base::binary); if (ofs.is_open()) { ofs.write(reinterpret_cast<char*>(&data), sizeof(Data)); ofs.close(); } else { std::cerr << "文件打开失败!" << std::endl; } return 0; } ``` ##### 追加二进制数据 ```cpp // 以追加模式写入二进制数据 std::ofstream ofs("data.bin", std::ios_base::app | std::ios_base::binary); ``` #### 4. 注意事项 - **模式组合优先级**:若同时指定冲突模式(如 `app` 与 `trunc`),实际行为由实现定义,需避免冲突。 - **文件状态检查**:操作前需通过 `is_open()` 确认文件是否成功打开。 - **数据对齐**:二进制读写时需确保内存布局与文件存储一致,可使用 `#pragma pack` 或 `alignas` 控制结构体对齐。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值