在 C++ 中将多个数字读入单个有符号字符

Reading multiple digits into a single signed char in C++

所以我正在为一个简单的 codeforces 回合构建一个愚蠢的应用程序,并决定我想把我的晚上花在过度优化上。

所以我有以下代码,其中字符串 "signed char" 的每个实例最初都是 "short",现在我遇到的问题是我想使用 cin, number 读取输入按数字,一旦我转到 signed char 数据类型,cin 现在一次读取一个字符。

例如,如果输入是 (4\n33 44 11 22),cin 现在会将 number_of_men 设置为 (4) 并将 tmp 设置为 4 然后 3 然后 3 然后 4 然后 33 然后44 然后 11 然后 22.

如何让 cin 将文本的多个字符作为数字读取到 SINGLE signed char 变量中?

#include <iostream>
using namespace std;

int main ()
{
ios::sync_with_stdio(false);
signed char number_of_men;

cin >> number_of_men;
signed char tmp;
signed char max =0;
signed char  max_loc=0;
signed char min = 101;
signed char min_loc=0;

for (signed char i=0; i < number_of_men; i++) {
    cin >> tmp; 
    if(tmp > max)
    {
        max_loc = i;
        max = tmp;
    }
    if(tmp <= min)
    {
        min_loc = i;
        min = tmp;
    }
}
    cout << max_loc + number_of_men-1 -min_loc-(max_loc > min_loc)<< endl;
    return 0;
}

cin 一次读取一个字符,因为您正在读取 char,您不能在 char 中存储多个字符,请使用 string那。如果你想读取一个数字并将其转换为 char,那么你需要读取一个 int 值并转换为 char:

int main(){
    int char_code;
    cin>>char_code;
    char c = (char)char_code;
    cout<<c;
}

此程序将为 50 输出 2,因为 50 在 ASCII 代码中是 2(假设您使用 ASCII)。

你想要 int8_t 来自 <stdint.h>.

cin根据变量类型判断正确的读操作。 char 变量意味着您获得第一个字符。一个 int 变量意味着你得到第一个数字。