在C ++中将多个数字读入单个签名字符

时间:2017-01-12 07:39:20

标签: c++ performance char cin

所以我正在为一个简单的代码组建立一个愚蠢的应用程序,并决定我想在晚上过度优化。

所以我有以下代码,其中字符串的每个实例" signed char"最初是"简短",现在我遇到的问题是我想使用cin读取输入,逐个数字,并且一旦我放入已签名的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;
}

2 个答案:

答案 0 :(得分:1)

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

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

此程序会为2输出50,因为502的ASCII代码(假设您使用ASCII)。

答案 1 :(得分:1)

您希望来自<stdint.h> int8_t

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