C ++使用int变量在char中存储数字

时间:2017-02-13 21:03:38

标签: c++ char int

我需要能够使用变量在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存储字符和整数,同时区分它们。

1 个答案:

答案 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;
    }
}