如何使用从右手边到左手边的子字符串?如何将字符串中的每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?

本文关键字:字符串 8个 字符 int 转换 何使用 右手边      更新时间:2023-10-16

我有这个代码:

#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::stringstreamstd::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));