首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c/c++中打印上标2?

如何在c/c++中打印上标2?
EN

Stack Overflow用户
提问于 2011-02-14 06:04:04
回答 3查看 13.6K关注 0票数 1

我试图在下面的代码中打印一个正方形标记:

代码1:

代码语言:javascript
运行
复制
char* exp = new char[300];  
*(exp) = 178// which is 2's extended ascii code  
*(exp+1) = '\0'// end of string  
printf("%s",exp);`

它会打印"?“

似乎小2会自动加入下一个字母:

代码2:

代码语言:javascript
运行
复制
char* exp = new char[300];  
*(exp) = 178// which is 2's extended ascii code  
*(exp+1) = '4'// or anything '5' 'a' '#'...  
*(exp+2) = '\0'// end of string  
printf("%s",exp);

它会打印一个中文单词,也许不会,但真的很喜欢。

该怎么办?我只想打印“小2”。

PS:

在WindowsXP控制台中,非常感谢您的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-14 06:52:39

ASCII字符集只包含英文字母、数字和其他一些字符,但没有什么像方形符号、钻石或俱乐部之类的花哨符号。这些字符在ASCII规范之外,取决于读取输出的人将接受哪种编码。还有所有非英语字符(如中文、日文、俄文、北欧重音字母、希伯来文、.)在ASCII规范之外。

当计算机产生一些输出时,您可以放心地假设,如果您只使用ASCII子集,您的字节将是明确的(曾经,使用不同的编码是很普遍的,即使只是英文字母,但现在大多数时间已经过去了)。但是,如果输出包含高于127的任何字节,则解释取决于读取器将考虑哪种编码。

非常常见的编码是拉丁文-1( is 8859-1),其中平方符号是代码178,CP850 (DOS),其中平方符号是253,或者UTF-8,其中平方符号是序列194+178。

考虑到终端显示的是汉字,我猜可能是将输出解释为UTF-8,因为这是一种对每个字符使用可变字节数的编码,但它能够表示任何unicode字符;iso-8859-1和cp850都不能表示汉字。

然而,这只是猜测,因为还有其他非常常见的编码,例如日语字符.(轮班-JIS)

票数 3
EN

Stack Overflow用户

发布于 2011-02-14 06:18:30

以下是打印上标2的三种不同方法:

代码语言:javascript
运行
复制
#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main(int argc, char** argv)
{
    setlocale(LC_CTYPE, "");

    wchar_t *foo = L"²";
    wprintf(L"%ls\n", foo);

    wprintf(L"²\n");

    wchar_t bar[2];
    bar[0] = 178;
    bar[1] = 0;
    wprintf(L"%ls\n", bar);

    return 0;
}
票数 7
EN

Stack Overflow用户

发布于 2011-02-14 06:09:32

178在ASCII表中不是一个小的两个,它是一个块。不是更像253吗?

此外,数字转换为字符的方式取决于您使用的平台。但你对此只字未提。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4989301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档