比较两个包含浮点值的字符串
Compare two strings containing float values
我得到了两个字符串,其中包含一个浮点数。我需要对它们进行比较。我可以使用std::string::compare
直接比较字符串吗?这总是会给出正确的结果吗?我目前的方法是使用std::stof
将字符串转换为float,但我更喜欢避免使用C++11库函数。
在这样的情况下,简单地比较字符串对您没有帮助
a = "0.43"
b = "0.4300"
如果你需要比较,首先将它们解析为float,然后比较
std::string s1 = "0.6"
std::wstring s2 = "0.7"
float d1 = std::stof(s1);
float d2 = std::stof(s2);
然后比较
这是完整的程序
#include <iostream> // std::cout
#include <string> // std::string, std::stof
int main ()
{
std::string s1 = "0.6"
std::wstring s2 = "0.7"
float d1 = std::stof(s1);
float d2 = std::stof(s2);
if(d1 == d2)
std::cout << "Equals!";
else
std::cout << "Not Equals!";
return 0;
}
点击此处了解更多关于stof 的信息
写一些难看的代码怎么样?这可能不是一个好的做法,但。。。
int compare (const string &str1, const string &str2) {
string *s1 = &str1, *s2 = &str2;
int isReverse = 1;
int len1, len2;
if (str1.length() > str2.length()) {
s1 = &str2;
s2 = &str1;
isReverse = -1;
}
len1 = s1->length();
len2 = s2->length();
if (!len1) {
if (!len2))
return 0;
else if ((*s2)[0] != '-')
return 1*isReverse;
return -1*isReverse;
}
int i = 0;
while(i < len1) {
if ((*s1)[i] > (*s2)[i])
return 1*isReverse;
else if ((*s1)[i] < (*s2)[i])
return -1*isReverse;
i++;
}
while (i < len2) {
if ((*s2)[i] != '0')
return -1*isReverse;
i++;
}
return 0;
}
相关文章:
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- C++ 按数值对元组<字符串、浮点数>然后按字典顺序排序的向量
- C++ stod:字符串到浮点转换是否一致
- 当字符串包含 %2C 时,在 c++ 中不完整的 std::string
- 在包含浮点数的结构上使用 memset()
- C++ 检查 UTF8 字符串包含指定的字符
- 如何创建带有字符串和浮点数的 2D 数组
- 如何使用 c++ 模板实现整数、字符串、浮点数和日期对象的数组
- C++带有字符串和浮点的文件 IO
- C 如何使用包含浮点的CE的给定地址进行阅读/写入
- 如何从字符串获得浮点值
- 将文件作为字符串包含在内
- 为什么string.empty()在字符串包含一个值时评估为true
- 我可以在CUDA设备上为包含浮点数数组的对象分配内存吗
- boost::p rogram_option::store 在选项字符串包含混合语言字符时引发异常
- 在 c++ 中将字符串(包含字符和浮点数)转换为双精度
- 比较两个包含浮点值的字符串
- 将字符串(包含数字)转换为整数并返回该整数
- 字符串到浮点的转换,同时支持小数点和小数逗号
- 如果输入字符串包含"%",则vsntprintf_s崩溃