Я получаю противоречивые ответы, что мне делать с моим кодом? - PullRequest
1 голос
/ 12 августа 2011

Я делаю RPG-игру на C ++ и DirectX.

Я храню все данные для игры в .txt файлах и читаю / записываю их, используя `ifstream / ofstream. до сих пор это работало хорошо для меня, когда я говорю о статистике существ, и у меня есть совместный взлом имен существ, но это становится проблемой.

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

Я спросил на gamedevelopment.stackexchange, как выводить текст на экран, и мне сказали использовать D3Dtext, но он принимает только строки в стиле C, и я могу читать только строки C ++ из текстового файла. Это такая большая проблема сейчас, когда я готов вернуться и переосмыслить то, что нужно, так как никакого прогресса не может быть достигнуто, пока это не будет рассортировано.

Так что теперь у меня есть куча вопросов, и я не знаю, что спросить в первую очередь:

  1. Я хочу нарисовать буквы как графику. Мне сказали, что это то, что делает D3Dtext, но я хочу реализовать это самостоятельно, если могу, мне просто нужна информация о том, как, если кто-то знает?

  2. Если я собираюсь использовать D3Dtext, как так называемые эксперты советуют мне использовать строки в стиле C. так как я могу преобразовать строки в стиле C в строки C ++? У меня сейчас есть метод, но для этого требуется оператор new и delete для каждой строки, и я вижу, что это большая проблема, поскольку она усложняется?

  3. Есть ли способ читать строки в стиле C? Может быть, замена для ifstream. Я хотел бы сохранить текстовые файлы, поскольку я действительно не хочу использовать xml, но я мог бы изменить формат файла, если бы это было жизнеспособное решение?

  4. Преждевременная оптимизация, я знаю, но я планирую использовать одну и ту же функцию для каждого фрагмента текста в игре, так что, что было бы хорошим способом сделать это с точки зрения скорости (почему я не хочу новый / удалить для каждого строка)?

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

Ответы [ 3 ]

3 голосов
/ 12 августа 2011
std::string mystr = "Hello World.";
mystr.c_str(); // gets a null terminated const char* C-style string

Прочтите ваш файл, как вы делаете сейчас, если вам нужен доступ к строкам c, как указано выше.

1 голос
/ 07 сентября 2011

Вы можете свободно конвертировать между строками в стиле C и C ++ std::string. Просто используйте my_cpp_string.c_str(), чтобы получить представление C-строки строки C ++, и std::string my_cpp_string(my_c_string), чтобы инициализировать новую строку std :: string из строки в стиле C.

1 голос
/ 12 августа 2011

2) Используйте метод c_str() для передачи строк C ++ в D3Dtext

some_D3Dtext_function(some_text.c_str())

3 и 4 затем становятся не проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...