我需要能够使用变量在char中存储数字,然后能够检测它是否为打印的数字或字符,将尝试用下面的代码示例进行解释:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<char> vChar;
int testInt = 67;
char testChar = 'x';
char printChar;
vChar.push_back(testInt);
vChar.push_back(testChar);
while (!vChar.empty()) {
printChar = vChar.back();
vChar.pop_back();
cout << printChar << endl;
}
return 0;
}
上面的代码将输出&#34; x C&#34;,这是不正确的,因为&#34; cout&#34;印刷&#34; printChar&#34;因为char不是int,67是ASCII中的C.
我可以演员&#34; int&#34; over&#34; printChar&#34;但这会使它输出&#34; 120 67&#34;,这仍然是不正确的。我还尝试使用条件来检测哪一个是数字,哪一个是字符。
while (!vChar.empty()) {
printChar = vChar.back();
vChar.pop_back();
if (isdigit(printChar)) {
cout << int(printChar) << endl;
}
else {
cout << printChar << endl;
}
}
但&#34; isdigit()&#34;永远不会被触发,结果与没有&#34; int&#34;投...
如何使用&#34; char&#34;正确打印/输出数字和字符的字符串?类型?
PS。我正在为我的学校项目计算矩阵,并且强制使用char作为symbolicmatrixes,因此我必须能够以某种方式使用char存储字符和整数,同时区分它们。
答案 0 :(得分:2)
如何使用&#34; char&#34;正确打印/输出数字和字符的字符串?类型?
一个选项是存储附加信息。
而不是使用
vector<char> vChar;
使用
// The first of the pair indicates whether the stored value
// is meant to be used as an int.
vector<std::pair<bool, char>> vChar;
然后
vChar.push_back({true, testInt});
vChar.push_back({false, testChar});
while (!vChar.empty()) {
auto printChar = vChar.back();
vChar.pop_back();
if ( printChar.first )
{
cout << (int)(printChar.second) << endl;
}
else
{
cout << printChar.second << endl;
}
}