Cro*_*oCo 1 c++ type-conversion
我const char*通过UDP 接收.此文本的大小各不相同(即不是固定大小).此文本具有double类型的值.我想把它转换成vector<double>.这就是我所做的.
std::vector<double> convertToDoubVect(const char * buff)
{
std::vector<double> vec;
std::istringstream data(buff);
int i = 0, count = 0;
// get number of doubles in const char* by incrementing count
while( buff[i] != '\0' )
{
if ( buff[i] == ' ')
++count;
++i;
}
// allocate an array for the total doubles
double *n = new double[count+1];
// convert const char* to vector<double>
for ( int i(0); i <= count; ++i)
{
data >> n[i];
vec.push_back(n[i]);
}
delete n;
return vec;
}
int main()
{
const char *doubStr = "2.3 4.3 5.6 2.1 4.4 3.1";
std::vector<double> vec = convertToDoubVect(doubStr);
for ( int i(0); i < vec.size(); ++i)
{
std::cout << vec[i] << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这绝对不是一种优雅的方式,但它确实做到了.有什么建议!我正在使用visual studio 2010.
Pio*_*cki 13
#include <sstream>
#include <vector>
#include <iterator>
const char* doubStr = "2.3 4.3 5.6 2.1 4.4 3.1";
std::istringstream iss(doubStr);
std::istream_iterator<double> it(iss), end;
std::vector<double> v(it, end);
Run Code Online (Sandbox Code Playgroud)