我有20位数字字符串,例如:12345678912345678912。 我想把它变成一个整数数组[1,2,3 ... 2] 我该怎么做? (我一直在使用sstream,atoi / stoi出错)
答案 0 :(得分:3)
创建一个新数组,并将每个数字字符转换为数字。只需从数字字符中减去'0'
,您就会得到数字。
数字字符-'0'
=该字符的ASCII值-'0'
的ASCII值=数字。
std::vector<int> digits;
for (int i = 0; i < s.size(); i++)
digits.push_back(s[i] - '0');
答案 1 :(得分:3)
使用ASCII是到达此处的方法。
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string s;
cin>>s;
int len = s.length();
int arr[len];
for( int it=0; it<len; it++ ){
// using ascii value
arr[it] = s[it] - '0';
}
for(int it=0; it<len; it++){
cout<<arr[it]<<" ";
}
return 0;
}
答案 2 :(得分:2)
// Example program
#include <iostream>
#include <string>
int main()
{
// convert char to int
std::string str = "12345678912345678912";
int digits[str.size()];
for (size_t i=0; i<str.size(); i++) {
digits[i] = str[i] - '0';
}
// print out the string
std::cout << str << std::endl;
// print out the digits
for (size_t i=0; i<str.size(); i++) {
std::cout << digits[i];
}
std::cout << std::endl;
}
答案 3 :(得分:1)
您需要学习使用C ++标准string
和字符串。然后学习使用标准函数将字符转换为整数。以下是一些有用的参考:
以上提到的解决方案是正确的。这是解决问题的另一种方法。
int main()
{
string input = "123456789";
int sum = 0;
const char * icstring = input.c_str(); // input character string
for(int i = 0; i < input.size(); i++)
{
char scstring[2]; // single character string
// Copy first digit to scstring
strncpy_s(scstring, icstring, 1);
// Convert scstring to integer using C library function 'atoi'
int digit = atoi(scstring); // cout << "i = " << endl;
sum += digit;
icstring++; // process next character
}
cout << "Sum of integers : " << sum << endl;
return 0;
}
答案 4 :(得分:0)
这是我的数据框df Pyzk日期时间Pyzk打孔 04/17/2019 22:30:22退房 04/17/2019 19:57:44入住 04/17/2019 11:51:34退房 04/16/2019 21:40:51入住 请给我解决方案 请建议我当我合并它签入和签出然后有问题,如果同一日期签入和签出然后结果是完美的如果签入一天并签出其他日期然后合并有问题我正在按日期合并使用内部联接