這不是一個設計問題,確實如此,儘管看起來可能如此。 (好吧,這是一個設計問題)。我想知道的是爲什麼C++ std::fstream
類不在其構造函數或開放方法中使用std::string
。每個人都喜歡這樣的代碼示例:爲什麼std :: fstream類不需要std :: string?
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::string filename = "testfile";
std::ifstream fin;
fin.open(filename.c_str()); // Works just fine.
fin.close();
//fin.open(filename); // Error: no such method.
//fin.close();
}
這使我一直處理文件。只要有可能,C++庫肯定會使用std::string
?
該示例不應對重載解析規則造成任何歧義。 `f(char *,std :: string)`是[精確匹配](http://www.lcdf.org/c++/clause13.html#s13.3.3.1.1),而其他的則需要轉換,因此首先是最好的可行功能。如果你刪除了第一個`f`,那麼就像[(char *&,std :: string&) - >(char *,std :: string) - >(char *,char *))[更好的轉換序列](http://www.lcdf.org/c++/clause13.html#s13.3.3)比「(char *&,std :: string&) - >(char *,std :: string) - >(std: :string,char *)「,第二個`f`將是最好的可行函數。我錯過了什麼嗎? – outis 2010-11-14 23:49:43