我有這樣的函數:如何使用stringstream將字符串轉換爲char *?
template <typename T>
void parse_to_T(const std::string& str, T* result) {
std::stringstream ss;
ss << str;
ss >> *result;
}
這個功能是指將字符串轉換爲指定的類型。
是工作解析字符串爲int,float和char。
parse_to_T<int>(...);
parse_to_T<float>(...);
parse_to_T<char>(...);
但是當見面的char *,段故障...
我使用這樣的功能:
int int_val;
string m = "1";
parse_to_T<int>(m, &int_val); // works
char* str_val = NULL;
parse_to_T<char*>(m, &str_val); // segmentfault
如何暗示這一功能,使其工作?
(字符串轉換爲指定的類型如int,雙,字符,字符*)?
嘿,我不知道該怎麼解釋我的使用情況,但我會努力:
要簡單,問題是,給定一個文件,每行,數據可能有這幾種:
- INT
- 浮子
- 炭
- 字符*
- 陣列T [NUM](T是整數,浮點,字符或字符*,或任何build_in類型)。
實現一個解析函數來解析這個文件。
而這個問題是考試......
感謝,我現在發現的錯誤。
char* str_val = NULL;
parse_to_T<char*>(m, &str_val); // segmentfault;
char* str_val;
parse_to_T<char*>(m, &str_val); // segmentfault;
char* str_val = new char[256];
parse_to_T<char*>(m, &str_val); // works !!
那麼錯誤是我沒有分配內存的PTR ...
您正在解除引用未初始化的指針 – Tas
我不認爲您會找到類似['std :: stod']的函數(http://en.cppreference.com/w/cpp/string/basic_string/stof )和['std :: stoi'](http://en.cppreference.com/w/cpp/string/basic_string/stol)系列更吸引人?在我看來,你正試圖在這裏重新發明輪子。 – WhozCraig
@Tas對不起。我只是忘了鍵入它的問題。 –