簡體   English   中英

從右手到左手如何使用substr? 如何將每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;
      }

/我的輸出是:12345678 91011121 31415161 .......我想從右到左而不是從左到右獲得8個字符。 然后,需要將接收到的每8個字符插入一個整數變量。 請,有人可以幫忙嗎? /

不確定我是否完全理解問題...但是,如果您想要最后八個字符,可以使用:

str.substr( str.length() - 8, 8 );

要將字符串轉換為整數,可以使用:

#include <cstdlib>

int i = atoi( str.c_str() );

或將字符轉換為int可以使用:

int i = str[ 0 ] - '0';

首先使用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";
    }
}

要使用后8位數字創建子字符串,請使用string::length

str.substr(str.length() - 8, 8)

然后,要將子字符串轉換為int,請使用stoi

int i = stoi(str.substr(str.length() - 8, 8));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM