【问题标题】:Is there a way to convert Armadillo vector to a string in C++?有没有办法将犰狳矢量转换为 C++ 中的字符串?
【发布时间】:2020-08-26 09:13:26
【问题描述】:

我想知道是否有办法将犰狳向量转换为标准字符串。例如,如果我有这个向量:

arma::vec myvec("1 2 3"); //create a vector of length 3 

我怎样才能生产:

std::string mystring("1 2 3");

来自它?

【问题讨论】:

    标签: c++ string std armadillo vec


    【解决方案1】:

    使用ostringstream.raw_print().st().substr() 的组合,如下所示。

    // vec is a column vector, or use rowvec to declare a row vector
    arma::vec myvec("1.2 2.3 3.4");  
    
    std::ostringstream ss;
    
    // .st() to transpose column vector into row vector
    myvec.st().raw_print(ss);  
    
    // get string version of vector with an end-of-line character at end
    std::string s1 = ss.str();
    
    // remove the end-of-line character at end
    std::string s2 = s1.substr(0, (s1.size() > 0) ? (s1.size()-1) : 0);
    

    如果要更改格式,请查看fmtflags

    std::ostringstream ss;
    ss.precision(11);
    ss.setf(std::ios::fixed);
    

    【讨论】:

      【解决方案2】:

      这应该可行:

      std::ostringstream s;
      s << myvec;
      std::string mystring = s.str();
      

      【讨论】:

      • 太棒了,谢谢!你知道为什么当我打印它时,它显示为列向量而不是一行中的字符吗?我怎样才能让它成为后一种形式?
      • 澄清一下,如果我这样做 for(int i=0;i
      • 糟糕。那'它显示为列向量,因为vec 是列向量。我猜你总是可以转置它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2021-12-20
      • 2023-01-27
      相关资源
      最近更新 更多