标题:中文变量
只看楼主
万致远醉帥
Rank: 2
等 级:论坛游民
威 望:1
帖 子:88
专家分:35
注 册:2020-3-24
结帖率:100%
已结贴  问题点数:5 回复次数:7 
中文变量
#include<iostream>
#include<string>
#include <algorithm>
#include <vector>
#include <memory>
using namespace std;
int da()
{
    int n, max, b = 0, l = 2;
    cout << "有几个数";
    cin >> n;
    if (n < 2)
    {
        cout << "请尊重程序员,谢谢" << endl;
        system("pause");
        system("cls");
        return 1;
    }
    vector<double> a(n);
    for (b = 0; b < n; b++)
    {
        cout << "请输入第" << b + 1 << "个数";
        cin >> a[b];
    }
    max = a[0];
    for (b = 1; b < n; b++)
    {
        if (a[b] > max)
        {
            max = a[b];
            l = b;
        }
    }
    cout << "最大的数是" << max << "是第" << l + 1 << "个";
    while (true)
    {
        NULL;
    }
    return 0;
}

int main()
{
    const double i = 1.2;
    cout << "求最大/小数,作者:万致远 版本" << i << endl;
    char da_xiao;
    cin >> da_xiao;
    switch (da_xiao)
    {
    case '大':da(); break;
    case '小':cout << "新功能正在开发中,请等待。"; break;
    }
}char类型不能是中文,怎么办?
搜索更多相关主题的帖子: 中文 cout max cin include 
2020-04-08 11:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
'大' ——— 它的类型是int,一个char存不下。具体到编码,那是实现定义的。
你可以用 wchar_t、char16_t、char32_t 等,有时还需要设置locale,挺麻烦的。
2020-04-08 12:12
雪影辰风
Rank: 6Rank: 6
来 自:衡阳市
等 级:贵宾
威 望:22
帖 子:177
专家分:387
注 册:2019-6-17
得分:2 
回复 2楼 rjsp
你好,宽窄字节我学的不是很好
您的意思就是说,不能直接用'大'来表示,而是用十六进制数来表示吗?
2020-04-08 12:15
万致远醉帥
Rank: 2
等 级:论坛游民
威 望:1
帖 子:88
专家分:35
注 册:2020-3-24
得分:0 
回复 2楼 rjsp
有点不太懂,可以在讲一下吗?

我们遇到什么困难,也不要怕,微笑着面对他,消除恐惧的最好方法就是面对恐惧。
2020-04-08 12:17
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:2 
回复 3楼 雪影辰风
2楼已经说的很明白了,char装不下int的大小

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-04-08 12:23
雪影辰风
Rank: 6Rank: 6
来 自:衡阳市
等 级:贵宾
威 望:22
帖 子:177
专家分:387
注 册:2019-6-17
得分:0 
回复 4楼 万致远醉帥
就是说,因为char是只占用一个字节的,我们叫做窄字节,而'大'这样的汉字,一个char装不下,所以需要用宽字节,也就是wchar_t类型
但是我最近测试发现好像不能用'大'来直接赋值,否则输出空白,可能是需要直接用16进制数来赋值,但是我试过,还是不行,我在想是不是用错编码了
我也不是很懂,具体看rjsp吧
2020-04-08 12:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用雪影辰风在2020-4-8 12:15:10的发言:

你好,宽窄字节我学的不是很好
您的意思就是说,不能直接用'大'来表示,而是用十六进制数来表示吗?

假如你用的是 VC,可以试试
程序代码:
#include <iostream>
#include <locale>
using namespace std;

int main( void )
{
    wcout.imbue( locale("") ); // 这一句很重要

    wchar_t da_xiao;
    if( !(wcin>>da_xiao) )
        return 1;

    switch (da_xiao)
    {
    case L'':
        wcout << L"你输入了\"大\"字\n";
        break;
    case L'':
        wcout << L"你输入了\"小\"字\n";
        break;
    default:
        wcout << L"你输入了\"" << da_xiao << L"\"字\n";
        break;
    }
}

假如你用的是mingw,比较麻烦,
将  wcout.imbue( locale("") ); 改为
    ios::sync_with_stdio(false);
    setlocale(LC_CTYPE, "");
如果还不行的话,编译参数增加 -fexec-charset=GBK; -finput-charset=UTF-8; 试试
2020-04-09 10:53
万致远醉帥
Rank: 2
等 级:论坛游民
威 望:1
帖 子:88
专家分:35
注 册:2020-3-24
得分:0 
改好了,用字符串+if语句
void xiao()
{
    int n, min, b = 0, l = 2;
    cout << "有几个数";
    cin >> n;
    if (n < 2)
    {
        cout << "请尊重程序员,谢谢" << endl;
        system("pause");
        system("cls");

    }
    vector<double> a(n);
    for (b = 0; b < n; b++)
    {
        cout << "请输入第" << b + 1 << "个数";
        cin >> a[b];
    }
min = a[0];
    for (b = 1; b < n; b++)
    {
        if (a[b] < min)
        {
            min = a[b];
            l = b;
        }
    }
    cout << "最"; Sleep(500); cout << "小"; Sleep(500); cout << "的"; Sleep(500); cout << "数"; Sleep(500); cout << "是"; Sleep(500); cout << min;
    while (true)
    {
        NULL;
    }
}
int main()
{
    const double i = 1.2;
    cout << "正在加载中,请稍后。就一杯茶的功夫";
    Sleep(10000);
    cout << "求最大/小数,作者:万致远 版本" << i << endl;
    string da_xiao;
    cout << "求大?求小?";
    cin >> da_xiao;
    if (da_xiao=="大")
    {
        da();
    }
    else
    {
        if (da_xiao=="小")
        {
            xiao();
        }
        else
        {
            cout << "新功能正在开发中,或请更新版本";
        }
    }
}

我们遇到什么困难,也不要怕,微笑着面对他,消除恐惧的最好方法就是面对恐惧。
2020-04-09 10:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500934-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016822 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved