精华内容
下载资源
问答
  • 输入上档字符,对于单按下档字符,半全角正常。 另外,我测试了一下,按住shift不松开,同时多次点击符6,会输出^……^……^……^……^……,状态栏的输入法...
  • 三字符组与双字符

    千次阅读 2015-05-06 14:30:23
    三字符组与双字符组 三字符组(trigraph)与双字符组(Digraph)是程序设计语言(如C语言)中3个或者2个字符的序列,在编译器预扫描源程序时被替换为单个字符。以解决某些键盘不能输入某些编程必须的字符...

    三字符组与双字符组

    三字符组(trigraph)与双字符组(Digraph)是程序设计语言(如C语言)中3个或者2个字符的序列,在编译器预扫描源程序时被替换为单个字符。以解决某些键盘不能输入某些编程必须的字符问题。

    缘起

    C语言的源程序的最低必须的字符集是基于7位ASCII码字符集,是ISO 646-1983 Invariant Code Set的一个超集。ISO 646最初是1972年颁布的一项国际化的7位ASCII标准,规定了12个字符所对应的码位保持对各国标准开放:# $ @ [ \ ] ^ ` { | } ~ 。

    因此法国标准AFNOR NF Z 62010-1982把码位0x7c(ASCII码的 | )定义为ù,用法文键盘就难以输入C语言的位或运算符 | ;码位0x7e(ASCII码的 ~)定义为 ¨ (即分音符),法文键盘就难以输入C语言的位非运算符~ 。

    加拿大法语标准CSA Z243.4-1985中把码位0x5e(ASCII码的 ^ )在定义为É,导致难以输入C语言的异或运算符 ^ 。

    三字符组

    为解决上述的C语言源代码输入问题,C语言标准规定预处理器(C preprocessor)在扫描处理C语言源文件时,替换下述的3字符出现为1个字符

    三字符组 替换为
    ??= #
    ??/ \
    ??' ^
    ??( [
    ??) ]
    ??! |
    ??< {
    ??> }
    ??- ~

    如果希望在源程序中有两个连续的问号,且不希望被预处理器替换,这种情况出现在字符常量、字符串字面值或者是程序注释中,可选办法是用字符串的自动连接:"...?""?..."或者转义序列"...?\?..."

    Microsoft Visual C++ 2010版开始,该编译器默认不再自动替换三字符组。如果需要使用三字符组替换(如为了兼容古老的软件代码),需要设置编译器命令行选项/Zc:trigraphs

    g++仍默认支持三字符组,但会给出编译警告。

    双字符组[编辑]

    1994年公布了一项C语言标准的修正案,引入了更具有可读性的5个双字符组。这也包括进了C99标准。

    双字符组 替换为
    <: [
    :> ]
    <% {
    %> }
    %: #

    不同于三字符组在源文件的任何出现都会被预处理器替换,双字符如果出现在字符串字面值(quoted string)、字符常量、程序注释中将不被替换。双字符组的替换发生在编译器对源程序的tokenization阶段(即识别出关键字、标识符等,类似于自然语言的“断词”),仅当双字符组作为一个token或者token的组成部分时(如%:%:被替换为预处理运算符##),双字符组才被替换为单字符。

    g++支持上述双字符组替换。但Microsoft Visual C++不支持双字符组替换。

    C++

    C++标准支持C语言的三字符组与双字符组(包括C99中的增补)。C++自身还提供了下述内置的关键字:

    关键字 等价于
    and &&
    bitor |
    or ||
    xor ^
    compl ~
    bitand &
    and_eq &=
    or_eq |=
    xor_eq ^=
    not !
    not_eq !=

    Microsoft Visual C++编译器要求如果使用上述关键字,必须包含头文件ciso646,否则编译报错。如“ error C2065: 'not' : undeclared identifier”。而g++编译器就不要求包含头文件ciso646

    展开全文
  • 打印引号很棘手,因为语法本身要求将引号括起来以打印字符串。在本文中,我们将看到如何使用print语句打印这些引号。下面的情况将不会打印引号。代码的前两行将不提供任何输出,而最后一行将通过错误。示例...

    打印双引号很棘手,因为语法本身要求将双引号括起来以打印字符串。在本文中,我们将看到如何使用print语句打印这些双引号。

    下面的情况将不会打印双引号。代码的前两行将不提供任何输出,而最后一行将通过错误。

    示例print(" ")

    print(" " " ")

    print(""aString"")

    输出结果

    运行以上代码,我们得到以下结果-;print(""aString"")

    ^

    SyntaxError: invalid syntax

    但是,如果我们将字符串用正确的引号括起来,如下所示,则引号本身可以被打印出来。用双引号引起来的单引号就可以了。

    示例print('Hello Nhooo')

    print('"Hello Nhooo"')

    输出结果

    运行上面的代码给我们以下结果-Hello Nhooo

    "Hello Nhooo"

    使用字符串变量

    我们还可以使用字符串格式来打印双引号以及其他任何属于打印语法的字符。

    示例StringVar = 'Hello Nhooo'

    print("\"%s\""% StringVar )

    print("\\%s\\"% StringVar )

    print('"%s"' % StringVar )

    print('"{}"'.format(StringVar))

    输出结果

    运行上面的代码给我们以下结果-"Hello Nhooo"

    \Hello Nhooo\

    "Hello Nhooo"

    "Hello Nhooo"

    展开全文
  • 一段实现给JSON键值对中的增加引号的函数.适用于C/C++处理JS或是JAVA生成的不带引号的JSON名JSON串时给JSON串中的名增加引号的情况.

          因为项目需要的HTTP协议环境下的JSON数据进行交互.并且本地开发使用C/C++.为了减少工作量自然是需要找几个开源库支持一下.HTTP协议方面CURL即可.JSON方面看起来有不少库可以选择.我找了一个jsoncpp和一个libjson库准备择优录取.

          因为JSON格式数据源是JAVA输出的,JSON中的Object集合中的key没有使用双引号结果在jsoncpp和libjson下parse都不能成功.然后我让同事在boost库中有的JSON模式下测试.结果还是不支持没有使用双引号的key.


          libjson期待的数据格式:{"key":"value"},HTTP提供的数据:{key:value}

     

          数据源是第三方软件支持的.没有修改的余地,没有别的办法.我只好自己写这样一个功能:实现一个函数.函数读取并解析JSON串并将所有的集合中的key都加上双引号.并且要求如下.首选函数不能JSON串中的双引号和转义字符干扰.第二.需要支持JSON中的ARRYA,Object的嵌套和混合嵌套.第三不能被空白字符和其它编码干扰.
          经过分析和调试.写了一个函数.用来把一个JSON串中的key加上双引号.
          此函数可以配合各种C/C++版的JSON使用用于在JSON串中添加和删除双引号.并且函数只用于无格式化的JSON数据.

     

     

    展开全文
  • 一、在java字符串中如果出现斜杠,1、当成转义字符 " \ " 时,后面必须接八进制数字进行ASCII转义输出成其它字符,2、当成字符串字面值斜杠直接输出时,必须用斜杠"\\"转义为单斜杠二、在字符串正则匹配使用时注意...

    一、在java字符串中如果出现斜杠,

    1、当成转义字符 " \ " 时,后面必须接八进制数字进行ASCII转义输出成其它字符,

    2、当成字符串字面值斜杠直接输出时,必须用双斜杠"\\"转义为单斜杠

    二、在字符串正则匹配使用时注意:

    1、反斜线字符 ('\') 用于引用转义构造,同时还用于引用其他将被解释为非转义构造的字符。因此,表达式 \\ 与单个反斜线匹配,而 \{ 与左括号匹配。

    根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。例如,当解释为正则表达式时,字符串字面值 "\b" 与单个退格字符匹配,而 "\\b" 与单词边界匹配。字符串字面值 "\(hello\)" 是非法的,将导致编译时错误;要与字符串 (hello) 匹配,必须使用字符串字面值 "\\(hello\\)"。

    附赠

    C语言常用转义字符表 和 ASCII码表完整版

    ASCII值

    控制字符

    ASCII值

    控制字符

    ASCII值

    控制字符

    ASCII值

    控制字符

    0

    NUT

    32

    (space)

    64

    @

    96

    1

    SOH

    33

    65

    A

    97

    a

    2

    STX

    34

    66

    B

    98

    b

    3

    ETX

    35

    #

    67

    C

    99

    c

    4

    EOT

    36

    $

    68

    D

    100

    d

    5

    ENQ

    37

    %

    69

    E

    101

    e

    6

    ACK

    38

    &

    70

    F

    102

    f

    7

    BEL

    39

    ,

    71

    G

    103

    g

    8

    BS

    40

    (

    72

    H

    104

    h

    9

    HT

    41

    )

    73

    I

    105

    i

    10

    LF

    42

    *

    74

    J

    106

    j

    11

    VT

    43

    +

    75

    K

    107

    k

    12

    FF

    44

    ,

    76

    L

    108

    l

    13

    CR

    45

    -

    77

    M

    109

    m

    14

    SO

    46

    .

    78

    N

    110

    n

    15

    SI

    47

    /

    79

    O

    111

    o

    16

    DLE

    48

    0

    80

    P

    112

    p

    17

    DCI

    49

    1

    81

    Q

    113

    q

    18

    DC2

    50

    2

    82

    R

    114

    r

    19

    DC3

    51

    3

    83

    X

    115

    s

    20

    DC4

    52

    4

    84

    T

    116

    t

    21

    NAK

    53

    5

    85

    U

    117

    u

    22

    SYN

    54

    6

    86

    V

    118

    v

    23

    TB

    55

    7

    87

    W

    119

    w

    24

    CAN

    56

    8

    88

    X

    120

    x

    25

    EM

    57

    9

    89

    Y

    121

    y

    26

    SUB

    58

    :

    90

    Z

    122

    z

    27

    ESC

    59

    ;

    91

    [

    123

    {

    28

    FS

    60

    <

    92

    /

    124

    |

    29

    GS

    61

    =

    93

    ]

    125

    }

    30

    RS

    62

    >

    94

    ^

    126

    ~

    31

    US

    63

    ?

    95

    127

    DEL

    转义字符

    含义

    ASCII码(16/10进制)

    \o

    空字符(NULL)

    00H/0

    \n

    换行符(LF)

    0AH/10

    \r

    回车符(CR)

    0DH/13

    \t

    水平制表符(HT)

    09H/9

    \v

    垂直制表(VT)

    0B/11

    \a

    响铃(BEL)

    07/7

    \b

    退格符(BS)

    08H/8

    \f

    换页符(FF)

    0CH/12

    \’

    单引号

    27H/39

    \”

    双引号

    22H/34

    \\

    反斜杠

    5CH/92

    \?

    问号字符

    3F/63

    \ddd

    任意字符

    三位八进制

    \xhh

    任意字符

    二位十六进制

    字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。

    在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。\ d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。\ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。

    使用转义字符时需要注意以下问题:

    1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。

    2) \v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。

    3)在C程序中,使用不可打印字符时,通常用转义字符表示

    注:

    1,\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。

    2,\n其实应该叫回车换行。换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。

    3,\t光标向前移动四格或八格,可以在编译器里设置

    4,\'在字符里(即单引号里)使用。在字符串里(即双引号里)不需要,只要用'即可。

    5,\?其实不必要。只要用?就可以了(在windows VC6和tc2中验证)。

    展开全文
  • 其中双字符记号有六个,也成为双字符组(digraph)::> ]%> }%: #%:%: ##如果上述任何字符组出现在字符常量或字符串字面值中,则不会被解释成双字符组;除此之外,它们一律被解释成双字符组,作用和相应的单一字符...
  • 如题,不是js,是java后台,JSON对象转成字符串之后,引号应该怎么去掉 搞了一个正则json.toString().replaceAll("\"(\\w+)\"(\\s*:\\s*)", "$1$2"); 可以去掉key的引号,可是value的还在
  • #include <stdlib.h> #include <...请问怎么在第一个节点中,从键盘输入N个字符串给*arr[amount1] 空格隔开,回车结束赋值 _(:зゝ∠)_我也不知道怎么给结构体中的*arr[amount1]申请内存
  • 转义字符 我们可以使用“\+特殊字符”,实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些: 转义字符 ... 引号 \b 退格(Backspace) \n
  • #include<stdio.h> int main() { /从键盘输入一个字符,判断该字符是否大写字母、小写字母、数字字符或其他字符。分别输出对应的提示信息。 输入 ...(输出不含引号)。 样例输入 Copy 1...
  • 常见的转义字符有这些:转义字符描述\(在行尾时)续行符\\反斜杠符号\'单引号\"引号\b退格(Backspace)\n换行\t横向制表符\r回车【操作】测试转义字符的使用#换行>>> a = 'I\nlove\nyou'>>> a'I\...
  • 装完搜狗后,键盘开始出现混乱,切换到英文输入法,输入引号输出的是@符号,输入#号输出的是未知语言的字符。 网上有的说在 system - keyboard - Input Source 下看看是否是非英语系国家的键盘布局。我把...
  • 某些特殊的效果可以用字符表示,比如 换行、空格,单引号、引号 >>> a='i\nlove\nyou' >>> a 'i\nlove\nyou' >>> print(a) i love you 字符串拼接: + 把两个字符串拼起来。 >>...
  • 1、Map-概述 特点: 1)、Map内部采用”键值对”的形式进行存储; 2)、在一个Map内,“”是唯一...Map(接口):列集合: –HashMap(子类):是哈希表结构 –LinkedHashMap(子类):是 链表、哈...
  • 思路:声明两个指针,分别为左指针与右指针,每次判断当两个字符串相等的时候,left与right同时相加,否则判断右字符串是否为重复的字符串。 class Solution { public boolean isLongPressedName(String name,...
  • 装完搜狗后,键盘开始出现混乱,切换到英文输入法,输入引号输出的是@符号,输入#号输出的是未知语言的字符。 网上有的说在 system - keyboard - Input Source 下看看是否是非英语系国家的键盘布局。我把Chinese...
  • 来存我们的字符,值来表示次数 3.遍历字符串得到每个字符,for()循环遍历 4.判断Map集合有没有我们的这个字符 5.有,说明集合里面有或者我们之前已经出现过了,直接对值进行加1,++操作 没有,第一步把字符存...
  • 从键盘输入一个包含数字字符字符串,从中取出符合精度常量格式的数字字符串,并将其转换成数值常量。 问题起因源于:要对一个表达式进行分析,发现可能存在的错误,若无错误,则进行表达式运算;想要解决该问题...
  • 在树莓派用Qt写程序的时候,用引号,总是会报 stray"\302"的错误,这个错误表示输入了非法字符。没想到这里的非法字符就是我输入的引号。 找了好多资料,发现是树莓派的键盘设置问题,输入的可能是半角标啥的,...
  • MySql JSON类型 名有特殊字符

    千次阅读 2019-07-23 16:39:31
    执行以下语句报错: SELECT `JsonField`->>'$.#key' FROM tableName; [Err] 3143 - Invalid JSON path expression. The error is around ...解决办法:名加引号 SELECT `JsonField`->>'$."#key...
  • 如sql中"\"""\'""\t""\n"sql中直接输出"'tab换行转义字符的一般应用"\"转义字符放到字符前面,如java和python输出内容用引号标识,引号中可以用转义字符\进行转义输出,比如输出引号java中 ...
  • 判断字符串是否为对称--链表

    千次阅读 2017-11-06 21:26:18
    判断字符串是否对称 算法思想: 1 从键盘中输入字符串,存放在数组中 2 将数组中元素依次摘下,尾插入法,插入到链表中 3 分别定义指针从链表头尾开始读取,比较对应的值
  • 如果关键字本身是字符串,则树中的一个结点只包含有一个字符;如果关键字本身是数字,则树中的一个结点只包含一个数位。每个关键字都是从树的根结点到叶子结点中经过的所有结点中存储的组合。 例如,当使用...
  • 指针——长按入

    2020-10-21 20:39:24
    偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。 示例 1: 输入:name...
  • 转义字符将后边的字符转义,各个语言中都用应用,如java、python、sql、hive、shell等等。 如sql中 "\"" "\'" "\t" "\n" sql中直接输出 " ' tab 换行 转义字符的一般应用直接用\加上转义的字符就行了...
  • 如何读计算机键盘上的英文字符 \ backslash / slash " Double quote (引号之间,可以说成:between the double quotes) ; semicolon ( left brace ) right brace # (平时应该怎么读不清楚。在C#中,#读Sharp) $ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,875
精华内容 750
关键字:

双字符键