所以我正在为一个简单的代码组建立一个愚蠢的应用程序,并决定我想在晚上过度优化。
所以我有以下代码,其中字符串的每个实例" 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;
}
答案 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
,因为50
是2
的ASCII代码(假设您使用ASCII)。
答案 1 :(得分:1)
您希望来自<stdint.h>
的 int8_t 。
cin
根据变量类型确定正确的读取操作。 char变量意味着您获得第一个字符。 int变量意味着你得到第一个数字。