Чтение нескольких цифр в один подписанный символ в C++

Поэтому я создавал глупое приложение для простого раунда Codeforces и решил, что хочу провести свой вечер с чрезмерной оптимизацией.

Итак, у меня был следующий код, где каждый экземпляр строки "подписанный символ" изначально был "коротким", теперь проблема, с которой я сталкиваюсь, заключается в том, что я хочу прочитать ввод, используя cin, число за номером, и как только я Если перейти к типу данных со знаком char, cin теперь читает по одному символу за раз.

Например, если входное значение равно (4\n33 44 11 22), cin теперь установит для number_of_men значение (4) и tmp на 4, затем 3, затем 3, затем 4, в отличие от 33, затем 44, затем 11, затем 22.

Как получить cin для чтения нескольких символов текста в виде числа в ОДНОЙ знаковой переменной 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;
}

2 ответа

Решение

Вы хотите int8_t из <stdint.h>,

cin определяет правильную операцию чтения на основе типа переменной. Переменная char означает, что вы получите первый символ. Переменная int означает, что вы получите первое число.

cin читает один символ за раз, потому что вы читаете charвы не можете хранить несколько символов в char, использовать string для этого. Если вы хотите прочитать число и преобразовать его в charтогда вам нужно почитать int значение и приведение к char:

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

Эта программа выдаст 2 за 50, как 50 является 2 в коде ASCII (при условии, что вы используете ASCII).

Другие вопросы по тегам