如何将 const char& 转换为 const std::string&?

没有问题

std::stof() 需要:

float std::stof(const std::wstring &,size_t *)
float std::stof(const std::string &,size_t *)

该函数是将一个由空格分隔的字符串转换为一个包含浮点数的向量。我尝试使用该std::stof()函数将字符转换为浮点数。我无法找到一个解决方案转换const char&const std::string&std::stof()需求。

如何将const char& s变量转换const std::string&变量?

#include<string>
#include <vector>

std::vector<float> parseLine(std::string line)
{
    std::vector<float> parsedLine{};
    for (int i{}; i < line.size(); i++)
    {
            if (line[i] != ' ')
            {
                const char& s = line[i];
                float fs = std::stof(s);
                parsedLine.push_back(fs);
            }

    }
    return parsedLine;
}
雷米勒博

您实际上应该搜索空格分隔符并相应地提取它们之间的子字符串,例如:

#include <string>
#include <vector>
#include <cctype>

std::vector<float> parseLine(const std::string &line)
{
    auto is_space = [](unsigned char ch){ return std::isspace(ch); };
    std::vector<float> parsedLine;
    auto end = line.begin(), start;
    while ((start = std::find_if_not(end, line.end(), is_space)) != line.end())
    {
        end = std::find_if(start, line.end(), is_space);
        std::string s(start, end);
        float fs = std::stof(s);
        parsedLine.push_back(fs);
    }
    return parsedLine;
}

如果您std::istringstream改为使用,则可以大大简化

#include <string>
#include <vector>
#include <sstream>

std::vector<float> parseLine(const std::string &line)
{
    std::vector<float> parsedLine;
    std::istringstream iss(line);
    // optional:
    // iss.exceptions(std::istringstream::failbit);
    float fs;
    while (iss >> fs){
        parsedLine.push_back(fs);
    }
    return parsedLine;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将std :: string转换为const char *或char *?

C ++ const char *转换为std :: string&

错误无法将“coll”(类型“std::__cxx11::list<char>”)转换为“const char&”

如何将“ std :: vector <std :: string>”转换为“ const char * array”?

如何将std :: wstring转换为char const []

如何将std :: string_view转换为const char *?

将 const char 转换为 std::string 作为标题

将const char **转换为std :: vector <const char *>

将std :: string转换为const tchar *

如何将 const char* 转换为 const unsigned char*

从类方法返回“ const char *”作为std :: string&

std :: string强制转换为const char *在std :: unordered_set <const char *>中找不到

如何将std :: string用于Const Char参数

错误:无法将'std :: basic_string <char> :: iterator ...'转换为'const char * for parameter'1'...'

C ++错误:无法将'std :: basic_string <char>'转换为'const char *'

如何将const uint8_t []转换为std :: string?

为什么将const char *强制转换为std :: string起作用?

字符串自动将const char *转换为std :: string

来自'std :: string(*)(std :: ofstream&,const string&,std :: string,int的无效转换

如何将 const char* 转换为 char[256]

如何将路径转换为FFI的const char *?

如何将const void *转换为unsigned char *?

如何将const char *转换为int

了解char&和const

将`hana :: string`转换为`constexpr const char(&)[]`

Swift:将 const char ** 输出参数转换为 String

无法将<string>从'const char []'转换为<class name>

将String8转换为const char *

将const Char *转换为Char数组