Списки аргументов строковых переменных в C ++ - PullRequest
2 голосов
/ 20 марта 2011

Я пытаюсь использовать список переменных аргументов, чтобы сделать NPC из моей текстовой RPG понятной.Есть так много ошибок, что я даже не пытаюсь их публиковать - я полагаю, я использую это так неправильно, что вам не понадобится вывод.Если вы это сделаете, конечно, я опубликую это.

Вот два файла, которые вам понадобятся:

//Globals.h

#ifndef _GLOBALS_
#define _GLOBALS_

//global variables

#include "Library.h"
//prototypes
bool Poglathon();
void NPCTalk(string speaker,string text,...);

//functions
void NPCTalk(string speaker,string text,...){
    va_list list;
    va_start(list,text);
    while(true){
        string t = va_arg(list,string);
        if (t.compare("")==0)
            break;
        cout << speaker << ": "<< t << endl << endl;
        system("PAUSE");
    }
}

#endif

И еще один:

//Library.h

#ifndef _LIBRARY_H_
#define _LIBRARY_H_

#include <iostream>
using namespace std;

#include "Globals.h"
#include <cstring>
#include <cmath>
#include <cstdio>
#include <cstdarg>

#endif

1 Ответ

3 голосов
/ 20 марта 2011

Как насчет вектора строк?

#include <vector>
#include <string>

void NPCTalk(std::string const& speaker, std::vector<std::string> const& text)
{
    for (std::vector<std::string>::const_iterator it = text.begin();
                                                  it != text.end(); ++it)
    {
        std::cout << speaker << ": " << *it << std::endl;
    }
}
...