Может кто-нибудь объяснить мне, почему на вкладке char [4] есть 4 дополнительных слота, когда я спросил только 3? Как от них избавиться? Я пишу код в Visual Studio 2017. Редактировать: первая программа была очень простой и не показала то, что я хотел. Итак, есть расширенный.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int i, n;
vector<char> input;
char chp;
cout << "Enter a expression" << endl;
while (1)
{
cin.get(chp);
if (chp == '\n') break;
input.push_back(chp);
}
n = input.size();
char* tab = new char[n] {};
for (i = 0; i < n; i++)
{
tab[i] = input[i];
}
int l = strlen(tab);
for (int i = 0; i < l; i++)
{
cout << "tab[" << i << "] is " << tab[i] << endl;
}
cin.get();
}
Результат в окне консоли аналогичен, когда я ввожу "3 + 3"
Вкладка [0] равна 3
вкладка [1] + + 1008 *
вкладка [2] 3
вкладка [3] ř
вкладка [4] - это
вкладка [5] ř
вкладка [6] ř
Это еще не полная программа (полная программа - это калькулятор, который вычисляет любое математическое выражение и намного длиннее). Я писал, что в C давно и в C динамические массивы не являются такой проблемой.
Кроме того, как насчет многомерных массивов? Может ли струна быть решением и для них?