C++ 对stof的调用没有匹配的函数
尝试获取字符串中的值,并将其保存在向量中,并在给定“q”作为输入时停止。然后复制浮点类型的其他向量中的值并打印其值。 但无法将字符串更改为float,并且显示错误。我正在使用stof()来执行此操作C++ 对stof的调用没有匹配的函数,c++,C++,尝试获取字符串中的值,并将其保存在向量中,并在给定“q”作为输入时停止。然后复制浮点类型的其他向量中的值并打印其值。 但无法将字符串更改为float,并且显示错误。我正在使用stof()来执行此操作 #include <iostream> #include <vector> #include <string> using namespace std; int main(){ string addDigit; vector<string
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(){
string addDigit;
vector<string> values;
vector<float> number;
while (cin >> addDigit) {
if (addDigit == 'q') {
break;
}
else {
values.push_back(addDigit);
}
}
int size=values.size();
for (int i = 0; i < size; ++i) {
float num=std::stof(values[i]);
number.push_back(num);
}
for (int i = 0; i < size; ++i) {
std::cout<<number[i];
}
cout << "\n" << endl;
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
字符串加数字;
向量值;
向量数;
而(cin>>添加数字){
如果(addDigit=='q'){
打破
}
否则{
值。向后推_(addDigit);
}
}
int size=values.size();
对于(int i=0;i std::coutstof函数接受std::string并将其转换为浮点数,但您提供的单个字符不能转换为std::string
还有另一个函数atof,它更接近您所期望的,但它使用一个指向以0结尾的字符数组的指针,而您也没有该数组
要将单个字符转换为相应的十进制值,只需输入[i]-“0”,因为ASCII代码中的字符的排列方式是,例如,字母“5”距离字母“0”有5个位置。stof函数获取std::string并将其转换为浮点数,但您给出的单个字符不能转换为std::string
还有另一个函数atof,它更接近您所期望的,但它使用一个指向以0结尾的字符数组的指针,而您也没有该数组
要将单个字符转换为相应的十进制值,只需将[i]-“0”设置为值,因为ASCII代码中的字符的排列方式是,例如,字母“5”与字母“0”相距5个位置。您需要做几件事来修复代码,请记住以下几点:
- 您正在使用
stof()
进行比较,并且stof将S字符串TOF转换为loat,因此您将无法像现在这样为其提供字符
- 在将输入值保存到浮点向量之前,最好先检查输入值是否是一个数字
要解决上述两个问题,实际上可以使用cin.good()提供的验证
,这也将清理代码。如果提供的输入可以存储到浮点型变量number
,则while
循环将数字添加到向量number
中,并请求另一个输入。要退出循环,只需输入不能存储到float
中的任何内容。可以吗r字母“q”也是
#包括
#包括
使用名称空间std;
int main()
{
向量数;
浮点数;
cin>>数量;
while(cin.good())
{
数字。推回(数字);
cin>>数量;
}
用于(自动i:数字)
您需要做几件事来修复代码,请记住以下几点:
- 您正在使用
stof()
进行比较,并且stof将S字符串TOF转换为loat,因此您将无法像现在这样为其提供字符
- 在将输入值保存到浮点向量之前,最好先检查输入值是否是一个数字
要解决上述两个问题,实际上可以使用cin.good()提供的验证
,这也将清理代码。如果提供的输入可以存储到浮点型变量number
,则while
循环将数字添加到向量number
中,并请求另一个输入。要退出循环,只需输入不能存储到float
中的任何内容。可以吗r字母“q”也是
#包括
#包括
使用名称空间std;
int main()
{
向量数;
浮点数;
cin>>数量;
while(cin.good())
{
数字。推回(数字);
cin>>数量;
}
用于(自动i:数字)
不能“但不能将字符串更改为浮点并且它显示错误”-错误是什么?你会让医生诊断你,而不告诉他们伤害的细节吗?values
是一个字符向量。values[i]
是单个字符。std::stof
需要一个字符串。字符串和字符是两个完全不同的东西。字符向量也不是字符串。如果需要字符串,请将其拼写为std::string
@StoryTeller UnslanderMonica,位于顶部“调用stof时没有匹配函数”“我们都很清楚这并不是全部错误消息。我不知道您在尝试做什么。将一个数字转换为浮点数对我来说似乎不合理。”但无法将字符串更改为浮点,因此显示错误”-错误是什么?你会让医生诊断你而不告诉他们伤害的细节吗?values
是一个字符向量。values[i]
是单个字符。std::stof
需要一个字符串。字符串和字符是两个完全不同的东西。字符向量也不是字符串。如果需要字符串,请将其拼写为std::string
@StoryTeller UnslanderMonica,位于顶部“调用stof时没有匹配函数”"我们都很清楚这不是全部的错误信息。我不知道你想做什么。对我来说,将一个数字转换为浮点数似乎不合理。好的,希瓦姆,问题现在更清楚了,那么你有了更好的解决方案。我已经更新了我的答案,这样你就可以看到伊托克,希瓦姆,问题更清楚了现在,你有了一个更好的解决方案