如何使用从右手边到左手边的子字符串?如何将字符串中的每8个字符转换为int
How to use substr from right hand side to left hand side? How to convert each 8 characters from a string to an int?
我有这个代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i=o;
string str="12345678910111213141516171819202122232425262728293";
while(i<str.length())
{
cout<<str.substr(i,8)<<endl;
i=i+8;
return 0;
}
/我的输出是:123456789101112131415161。。。。。。。我想从右到左得到8个字符,而不是从左到右。然后,每个接收到的8个字符都需要插入一个整数变量中。有人能帮忙吗/
首先使用mod %
运算符打印剩余字符。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str="12345678910111213141516171819202122232425262728293";
std::size_t sz = str.size();
std::size_t i = 0;
if(sz % 8) {
cout<<str.substr(i, sz % 8) << ' ' ;
i += sz % 8;
}
while(i<str.length())
{
cout << str.substr(i,8) << ' ';
i = i+8;
}
cout << endl;
return 0;
}
现场演示
现在可以使用std::stringstream
或std::stoi
将这些字符串转换为数字。
int strToNum(const string &str)
{
std::stringstream sstr(str);
int ret;
if( sstr >> ret ) {
return ret;
} else {
// Error handling
throw str + " is not an integer";
}
}
不确定我是否完全理解这个问题。。。但如果你想要最后八个字符,你可以使用:
str.substr( str.length() - 8, 8 );
要将字符串转换为int,可以使用:
#include <cstdlib>
int i = atoi( str.c_str() );
或者,要将字符转换为int,可以使用:
int i = str[ 0 ] - '0';
要从最后8位创建子字符串,请使用string::length
:
str.substr(str.length() - 8, 8)
然后,要将该子字符串转换为int,请使用stoi
:
int i = stoi(str.substr(str.length() - 8, 8));
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 两个字符串在 c++ 中不相等
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 构造<int>具有 2 个字符串文字的向量
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 移除前面有空格的前2个字符串
- 将stl字符串缩小到小于15个字符的容量
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- c++ 构造函数 将 1 个字符串参数转换为 3 个属性
- 如何从字符串C++读取多个整数
- 比较两个字符串后卡在无限循环中
- 如何输出字符串第二个单词的第一个字母?
- 在C++中,有没有获得字符串第一个字符的最佳实践
- 将固定长度的短字符串(52个字符)压缩到小于40个
- 用这种方式比较字符串是个好方法吗
- 如何通过 bash shell 输入 c++ 字符串 >= 1024 个字符?