2017-02-13 19 views
-3

мне нужно, чтобы иметь возможность хранить номер в полукокса с помощью переменной, а затем в состоянии обнаружить, если это число или символ для печати, будет пытаться объяснить с ниже пример кода:C++ номер магазина в полукокса с помощью INT переменной

#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; 
} 

Выше кода выводит «x C», что неверно, поскольку «cout» печатает «printChar» как char не как int, а 67 - C в ASCII.

Я мог бы наложить «int» поверх «printChar», но это сделает вывод «120 67», который по-прежнему неверен. Я также пытался использовать условия, чтобы определить, какой из них является номером, который является символом.

while (!vChar.empty()) { 
    printChar = vChar.back(); 
    vChar.pop_back(); 
    if (isdigit(printChar)) { 
     cout << int(printChar) << endl; 
    } 
    else { 
     cout << printChar << endl; 
    } 
} 

но «isdigit()» никогда не срабатывает, и результат такой же, как и без «ИНТ» гипсе ...

Как правильно печатать строку вывода/для обоих чисел и символов с помощью «полукокса " тип?

PS. Я делаю это для своего школьного проекта для вычисления матриц, и использование char для символических матриц принудительно, поэтому я должен как-то уметь хранить как символ, так и целое число, используя char, дифференцируя их друг от друга.

+1

Сохранить данные в виде строк вместо 'char'? – NathanOliver

+0

Что делать, если вы хотите сохранить число, например 256 или 1000? Или академик, который установил ограничения, связанные с реальным миром, уже покрывает то, что вы здесь не упомянули? – WhozCraig

+0

@WhozCraig, если быть честным с тобой, я понятия не имею, почему они ограничивают нас таким образом ... Я борюсь за эту проблему в течение нескольких часов без ясного представления, как ее решить –

ответ

2

Как правильно напечатать/вывести строку для чисел и символов с использованием типа «char»?

Один из вариантов - дополнительная информация.

Вместо использования

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

 Смежные вопросы

  • Нет связанных вопросов^_^