如何在c++中比较java版本字符串
How to compare java version strings in c++?
假设我有这样的字符串(Java版本字符串):"1.8.0_101"1.8.0_91"
是否有一种简单的方法来确定c/c++中哪个版本更高?
到目前为止,我已经使用了strcmp()。它可以正确地比较版本字符串,如"1.7.0"answers"1.8.0",但当涉及下划线字符时,它不再工作(因为下划线在ASCII表中比所有数字具有更高的值)免责声明:这应该只是一个例子,给你一个实现的想法。你的问题缺少很多点,为了使它成为一个好问题,无论如何,我会尽力帮助你,给你一个可运行的例子。代码还可以改进,使其更健壮。
struct Version {
int m_major;
int m_minor;
int m_release;
int m_minor_release;
Version() : m_major(-1),
m_minor(-1),
m_release(-1),
m_minor_release(-1) { }
// Convert a str to a version object
explicit Version(const std::string& str_version) : Version() {
size_t offset = 0;
size_t finder;
// Cycle until find a character as '.' '-' '_'
while (finder = str_version.find_first_of(".-_", offset),
finder != std::string::npos) {
int* p = nullptr;
if (m_major == -1) {
p = &m_major;
} else if (m_minor == -1) {
p = &m_minor;
} else if (m_release == -1) {
p = &m_release;
} else {
p = &m_minor_release;
}
*p = std::stoi(str_version.substr(offset, finder - offset));
offset = finder + 1;
}
if (offset != str_version.size() && m_minor_release == -1) {
m_minor_release = std::stoi(
str_version.substr(offset,std::string::npos));
}
}
bool operator<(const Version& oth) const {
// compare this version with another one
}
};
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在java中解决这段代码时面临循环中的问题
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 尝试用java代码编译和运行c++代码
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- 在这种情况下,java对象是否可以调用本机函数
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 为什么这种特定的C 实现N体程序比Java版本更快
- Java循环屏障C++版本是什么?
- 使用 C、C++ 或 Java 以编程方式获取 Java 和 Flash 的版本号
- 在c#、c++和java中创建python弱类型结构的强类型版本
- 不同的c++标准与不同的Java版本有可比性吗?
- 这个java映射代码的c ++版本是什么
- 如何在c++中比较java版本字符串
- 从Java调用c++,但是Java加载了错误的Glibc版本
- C++版本的java这个.在课堂上