c++ - 如何在数组中返回负字符?
问题描述
我正在为学校做一个 C++ 项目,我正在尝试将一个矩阵从一个文本文件写入一个数组。源数据中有负数和两个 5x5 矩阵。我不断得到不同的字符(╧或=)而不是负数:
void main()
{
char c;
char nbRow , nbCol;
int location = 0;
int MatrixArray[10][10];
int negNbr;
int k = 0;
int l = 0;
cin.get(c);
nbRow = c;
cout << "Number of rows: " << nbRow << endl;
cin.get(c);
cin.get(c);
nbCol = c;
cout << "Number of columns: " << nbCol << endl;
while (!cin.eof())
{
cin.get(c);
//cout << (int)c << endl;
if (!isblank(c) && (isdigit(c) || c == 45))
{
cout << c << " | test1 " << " | ";
if (c == 45)
{
cin.get(c);
negNbr = (char)c;
negNbr = negNbr * -1;
cout << (char)negNbr;
MatrixArray[k][l] = (char)negNbr;// *-1;
}
else //if (isdigit(c))
{
MatrixArray[k][l] = (char)c;
}
cout << " |test2 " << k << l << "| " << (char)MatrixArray[k][l] << endl;
if (l == 4)
{
k++;
l = 0;
}
else l++;
}
}
解决方案
cin.get
读取输入的单个字符。如果您调用cin.get(c)
并输入123
控制台,c
最终将包含char
'1'
,而不是数字1
或数字123
或类似的东西。如果然后将其转换为int
,您将得到int
49
, 因为'1'
是 ASCII 代码点49
。
从控制台读取整数的正确方法是使用>>
运算符:
int i;
std::cin >> i;
使用>>
运算符,如果您123
在控制台中键入,i
最终将得到 value 123
。
推荐阅读
- google-cloud-dataprep - Google Dataprep 在查找功能期间遇到 UI 问题
- google-cloud-platform - 使用 IAP 的 Spinnaker 身份验证
- powershell - 通过 PS 注销特定断开连接用户的脚本
- plsql - 在 plsql 中验证 ascii 32 到 126
- r - 根据总变量填写列联表
- c# - Xamarin iOS UITableView 在初始设置时为所有单元调用委托方法,而不仅仅是可见的
- javascript - 带有 settimeout 的异步 javascript 承诺调用
- react-native - React Native:点击屏幕背景时抽屉不会关闭
- github - 如何删除除 master 之外的所有 Git 远程分支?
- azure-storage - Azure Function App 中用户计算机上给定路径的图像流/字节数组