我有这样的函数:如何使用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对不起。我只是忘了键入它的问题。 –