首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双变量Char变量

双变量Char变量
EN

Stack Overflow用户
提问于 2013-09-05 07:32:53
回答 3查看 170关注 0票数 0

我需要一点帮助。这个问题很简单,但很抱歉我的知识有限。我想将一维双数组转换为象this..for example..the那样的字符矩阵,双矩阵的第一个元素是

代码语言:javascript
复制
double version[6];
char version_ch[6][6];
version[0]=1.1587

我想把版本转换成version_ch等等。每个版本变量都是6 digits.Can,任何人都可以在这方面帮助我。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-05 07:56:07

如果您实际上想要您所请求的char数组,那么您可以这样生成它:

代码语言:javascript
复制
#include <cstdio>
#include <cstring>

// ...

    static const size_t VERSION_N_ELEM = 6;
    static const size_t VERSION_STR_LEN = 6;

    double version[VERSION_N_ELEM];
    char version_ch[VERSION_N_ELEM][VERSION_STR_LEN];

    char buf[32];
    for (int i = 0; i < VERSION_N_ELEM; ++i) {
        sprintf(buf, "%.4f", version[i]);
        strncpy(version_ch[i], buf, VERSION_STR_LEN);
    }

这更像是一种c方法,而不是c++,但同样地,像您这样使用数组更像是c方法,而不是c++。在这里使用sprintf并不完全安全。如果编译器库中有sprintf_s或snprintf,则应该考虑使用它。或者用小溪。

由于您很少谈到预期的用途,您应该注意到,字符‘矩阵’中的字符串可能不会终止为空,因为没有足够的空间用于这个目的。

票数 0
EN

Stack Overflow用户

发布于 2013-09-05 07:43:32

这个怎么样:

代码语言:javascript
复制
const size_t num_versions = 6;

std::array<double, num_versions> version;
version[0] = 1.1587;
// ...

std::array<std::string, num_versions> version_str;
std::transform(std::begin(version), std::end(version), std::begin(version_str),
    [](const double& value) { return std::to_string(value); });

阅读关于std::arraystd::stringstd::transformlambda表达式std::to_string的文章。

票数 2
EN

Stack Overflow用户

发布于 2013-09-05 07:48:11

在c++中,您所要求的是非常糟糕的设计。您可以使用以下代码获得结果:

代码语言:javascript
复制
#include <sstream>
#include <iostream>
#include <string>

using namespace std;

int main(){
        double version[4] = {1.2, 3.4, 5.6, 7.8};
        char version_ch[4][3];

        for(unsigned int i = 0; i < 4; i++){
                stringstream ss; 
                ss << version[i];
                string tmp_str = ss.str();
                for(unsigned int j = 0; j < 3; j++){
                        version_ch[i][j] = tmp_str.c_str()[j];
                }   
        }   
}

但是,说真的,你应该修改你的设计!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18630342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档