将可变大小的双精度数组转换为wchar_t

时间:2014-05-05 00:09:12

标签: c++ arrays type-conversion

c ++非常新,但我不能围绕这个

我得到了这一系列的双打,只是想把它变成一个'字符串'中间有空格

在java中我只是遍历所有条目和StringBuilder.append(arr [i])。append('');

我不知道如何用c ++做到这一点,我想出的最好的事情就是这个

wchar_t* getStuff(const double *arr, const int arr_size)
{
  std::vector<wchar_t> result(arr_size*2);

  for( int i = 0; i < arr_size*2; i++)
  {
    if ( i % 2 == 0 )
        result[i] = ?;
    else
        result[i] = L' ';
  }

  return &result[0];
}

我知道这不会编译并包含一些非c代码。

我有点迷失在这里,因为我不知道转换的好方法,这究竟是指针,这是一个真正的价值。

1 个答案:

答案 0 :(得分:1)

您可以使用std::wostringstream来实现此目标。

wchar_t* getStuff(const double *arr, const int arr_size)
{
  std::vector<wchar_t> result(arr_size*2);

  for( int i = 0; i < arr_size*2; i++)
  {
    std::wostringstream theStringRepresentation;
    theStringRepresentation << arr[i];
    // use theStringRepresentation.str() in the following code to refer to the 
    // widechar string representation of the double value from arr[i]
  }

  return &result[0];
}

另请注意,返回本地范围变量引用是未定义的行为!

return &result[0]; // Don't do this!

为什么不简单地使用std::vector<std::wstring>代替std::vector<wchar_t>

std::wstring getStuff(const double *arr, const int arr_size) {
  std::vector<std::wstring> result(arr_size*2);

  for( int i = 0; i < arr_size*2; i++)
  {
    std::wostringstream theStringRepresentation;
    theStringRepresentation << arr[i];
    // use theStringRepresentation.str() in the following code to refer to the 
    // widechar string representation of the double value from arr[i]
  }

  return result[0];
}