我有这段代码:
#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个字符需要插入整数变量。请问,有人可以帮忙吗? /
答案 0 :(得分:1)
不确定我完全理解这个问题...... 但是如果你想要最后八个字符可以使用:
str.substr( str.length() - 8, 8 );
要将字符串转换为int,您可以使用:
#include <cstdlib>
int i = atoi( str.c_str() );
或者将角色转换为可以使用的int:
int i = str[ 0 ] - '0';
答案 1 :(得分:1)
首先使用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";
}
}
答案 2 :(得分:0)
要从最后8位数字创建子字符串,请使用string::length
:
str.substr(str.length() - 8, 8)
然后,要将该子字符串转换为int,请使用stoi
:
int i = stoi(str.substr(str.length() - 8, 8));