2011-08-12 21 views
1

我正在用C++和DirectX製作RPG遊戲。我收到了矛盾的答案,應該如何處理我的代碼?

我將遊戲的所有數據存儲在.txt文件中,並使用ifstream/ofstream讀取/寫入它。至今在談論生物屬性時我已經很好地工作了,並且我爲生物名稱一起攻擊,但這成爲一個問題。

我可以將字符串存儲在txt文件中並閱讀它們,但我無法使用它們。對於單個單詞我有一個黑客,但現在我已經到了角色互相交談的故事線,這是一個真正的問題。

我問gamedevelopment.stackexchange如何把文本放在屏幕上,並被告知使用D3Dtext但只接受C風格的字符串,我只能從文本文件中讀取C++字符串。這是一個很大的問題,我現在願意回去重新考慮需要考慮的事項,因爲在這個分類之前無法取得進展。

所以現在我有一大堆的問題,我不知道該先問問:

  1. 我想要的方式來繪製圖形一樣的字母。我被告知這是D3Dtext的作用,但我想實現它我自己,如果我可以只需要知道如何如果有人知道?

  2. 如果我要使用D3Dtext就像所謂的高手,建議我必須使用C風格的字符串。那麼如何將C風格的字符串轉換爲C++字符串呢?我現在有一個方法,但是需要每個字符串都有新的和刪除操作符,而且隨着複雜性的增長,我可以看到這是一個大問題?

  3. 有沒有辦法讀取C風格的字符串?也許是替代ifstream。我想保留txt文件,因爲我真的不想使用xml,但如果它是可行的解決方案,我可以更改文件格式?

  4. 不成熟的優化我知道,但我打算對遊戲中的每一段文本使用相同的函數,所以在速度方面做什麼會是一個好方法(爲什麼我不想每個字符串都要新/刪除)?

我很高興爲您提供任何需要幫助的信息,只是問。

+0

std :: string s; const char * cstring = s.c_str(); – Bill

+0

@meagar你可以讓你的評論一個答案,所以我可以接受它。這裏是最有幫助的一個。 – Skeith

+0

@Skeith當然,謝謝。 – meagar

回答

1

你可以在C風格的字符串和C++的std::string之間自由轉換。只需使用my_cpp_string.c_str()即可獲取C++字符串的C字符串表示形式,並使用std::string my_cpp_string(my_c_string)從C風格字符串中初始化新的std :: string字符串。

3
std::string mystr = "Hello World."; 
mystr.c_str(); // gets a null terminated const char* C-style string 

如果您需要像上面那樣訪問c字符串,請按照當前的操作讀取您的文件。

+0

非問題? C++總是有一種方法可以從std :: string中獲得一個C風格的字符串:)被投票的父項。 – Torp

1

2)使用c_str()方法通過您的C++字符串D3Dtext

some_D3Dtext_function(some_text.c_str()) 

3和4,然後變成非問題。