读取float并插入const char数组*

时间:2015-05-28 14:21:03

标签: c++ arrays char

从文本文件中,我读了几个值,如

s_no

如何将它们附加到const char数组中,例如

const float vLowCut   = cfg.get<float>("LowCut");
const float vLowCut1   = cfg.get<float>("LowCut1");
...

当然上面的行不起作用,只是想展示我想拥有的东西。 谢谢

3 个答案:

答案 0 :(得分:6)

这里使用const char *会很困难,因为你需要创建一个指向它的数组。一个C ++习语会更方便:

std::string CutList[2] = {
    "value" + std::to_string(vLowCut),
    "value2" + std::to_string(vLowCut2)
};

答案 1 :(得分:0)

使用{{3}}这样的功能:

std::string CutList = {"value: "+ std::to_string(vLowCut), " value2: " + std::to_string(vLowCut2))

答案 2 :(得分:0)

您是否考虑过使用std::string?您可以使用std::to_string

执行此操作
std::string CutList[2] = {"value" + std::to_string(vLowCut), 
                          "value2" + std::to_string(vLowCut2));

如果你想使用显式格式说明符,你可以使用std :: stringstream,就像这样:

#include <iostream>
#include <string>
#include <iomanip>

auto my_float_to_string = 
   [](float f){ std::stringstream ss; 
                ss << std::setprecision(3) << f;
                return ss.str(); };
std::string CutList[2] = {"value" + my_float_to_string(vLowCut), 
                          "value2" + my_float_to_string(vLowCut2));

您可以使用c_str()将其转换回const char*

strstr(CutList[0].c_str());

但是不要将c_str()用作永久存储,一旦std::string对象被销毁,它将被销毁。即:

void f(int a) {
    const char* s = nullptr;
    if(a == 10) { 
        s = std::string("aaaa").c_str(); }
    // Here s may point to invalid data because
    // corresponding std::string object has been destroyed
}