c++将带短划线的字符串转换为整数
c++ convert string with dashes to integer
使用c++,如果我有一个字符串str="0-7637-2129-8",我如何将其转换为1个大整数?763721298字符串将始终采用该格式。更多示例:1-2344-3457-8=1234 4345780-0002-0020-0=200200
您可以使用擦除-删除习惯用法来删除所有'-'
字符。
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string myStr = "0-7637-2129-8";
myStr.erase(std::remove(myStr.begin(), myStr.end(), '-'), myStr.end());
long myLong = std::atol(myStr.c_str()); // convert to long
std::cout << "Your number is now " << myLong << std::endl;
return 0;
}
工作示例
使用:
str.erase(std::remove(str.begin(), str.end(), '-'), str.end());
然后转换为long。
为了提供最模糊、最复杂的问题解决方案,我向大家展示了这段巧妙的代码
#include <locale>
#include <sstream>
...
struct dash_14 : std::numpunct<char>
{
char do_thousands_sep() const { return '-'; }
std::string do_grouping() const { return "14"; }
};
...
std::string str = "0-7637-2129-8";
std::stringstream ss(str);
ss.imbue(std::locale(ss.getloc(), new dash_14));
unsigned long long i;
ss >> i;
请注意,这不需要修改原始字符串:)
当然,这取决于你的字符串是否坚持特定的格式。
相关文章:
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 如何将这个std::字符串转换为std::基本字符串
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 如何在C++中将十六进制字符串转换为文本数据
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何从字符串转换为双精度*
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 如何在C++中将 Python 字符串转换为其转义版本?
- 如何在 C++11 中将标准::字符串转换为标准::u32字符串?
- 如何将整数字符串转换为整数的二维向量?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 将文件复制到自定义位置,存在字符串转换问题
- 将ANSI C字符串转换为UNICODE
- 如何将节点 V8 字符串转换为 C++ 字符串
- 在C++中将字符串转换为双精度,而无需科学记数法
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 如何在C++中将字符串转换为双精度?
- 将字符串转换为无符号字符数组/字节数组