преобразование имени переменной к строке в C++

Я хотел бы произвести некоторые данные в файл. Например, предположите, что у меня есть два вектора, удваивается:

vector<double> data1(10);
vector<double> data2(10); 

есть ли простой способ произвести это в файл так, чтобы первая строка содержала заголовки 'data1' и 'data2', сопровождаемый фактическим содержанием. Функция, которая производит данные, будет передана всевозможные массивы так жесткое кодирование, название заголовка не возможно - идеально я хотел бы преобразовать имя переменной в некоторую строку и затем произвести ту строку, сопровождаемую содержанием векторного массива. Однако я не уверен, как преобразовать имя переменной 'data1' в строку, или действительно если оно может легко быть сделано (от чтения форумов, мое предположение - оно, не может), Если это не возможно, что альтернатива могла бы быть должна использовать ассоциативный контейнер, такой как карта или возможно проще 'парный' контейнер.

pair<vector<double>,string> data1(10,'data1');  

Любые предложения приветствовались бы!

24
задан Soo Wei Tan 2 May 2012 в 21:06
поделиться

3 ответа

Вы можете использовать препроцессор "stringify" # , чтобы делать то, что вы хотите:

#include <stdio.h>

#define PRINTER(name) printer(#name, (name))

void printer(char *name, int value) {
    printf("name: %s\tvalue: %d\n", name, value);
}

int main (int argc, char* argv[]) {
    int foo = 0;
    int bar = 1;

    PRINTER(foo);
    PRINTER(bar);

    return 0;
}


name: foo   value: 0
name: bar   value: 1

(Извините за printf , я никогда не зависал of . Но этого должно быть достаточно.)

40
ответ дан 28 November 2019 в 22:59
поделиться

Вы можете использовать препроцессор, там есть токен stringify, но он доступен только из источника, а не для функции (вы бы получили имя аргумента).

2
ответ дан 28 November 2019 в 22:59
поделиться

Я бы подумал, что очевидный ответ - заставить функцию, которая выполняет вывод, принимать текст заголовка как строковый параметр.

1
ответ дан 28 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: