숫자 인 두 개의 문자열의 합을 얻으려면 어떻게해야합니까? 예를 들어 : 두 문자열의 합을 얻는 방법 - C++
string num1 = "12";
string num2 = "4";
string sum = num1 + num2;
그래서
string sum
전 C에서이 작업을 수행하려면 어떻게
"16"
동일합니다 ++?
나는 ASCII 문자로 그 일을 시도했지만뿐만 아니라숫자 인 두 개의 문자열의 합을 얻으려면 어떻게해야합니까? 예를 들어 : 두 문자열의 합을 얻는 방법 - C++
string num1 = "12";
string num2 = "4";
string sum = num1 + num2;
그래서
string sum
전 C에서이 작업을 수행하려면 어떻게
"16"
동일합니다 ++?
나는 ASCII 문자로 그 일을 시도했지만뿐만 아니라문자열을 사용하여 큰 정수를 추가하려면 다음과 같이하면됩니다.
string doSum(string a, string b)
{
if(a.size() < b.size())
swap(a, b);
int j = a.size()-1;
for(int i=b.size()-1; i>=0; i--, j--)
a[j]+=(b[i]-'0');
for(int i=a.size()-1; i>0; i--)
{
if(a[i] > '9')
{
int d = a[i]-'0';
a[i-1] = ((a[i-1]-'0') + d/10) + '0';
a[i] = (d%10)+'0';
}
}
if(a[0] > '9')
{
string k;
k+=a[0];
a[0] = ((a[0]-'0')%10)+'0';
k[0] = ((k[0]-'0')/10)+'0';
a = k+a;
}
return a;
}
int main()
{
string result = doSum("1234567890", "123789456123");
cout << result << "\n";
}
출력
125024024013
참조 : See the complete code at Ideone.com 나는 수가 매우 크기 때문에 경우 문자열을 사용할 필요가
'string sum = ...'은'cout << sum << "과 같지 않습니다. \ n";'! –
@ πάνταῥεῖ 아니오, 그러나 이것이 시각적 인 기본이라면'딤섬'을 가질 수 있습니다. – user4581301
@ user4581301 누가 여기에서 VB에 대해 말하고 있었습니까? –
플랫 대답은
string sum = std::to_string(std::stoi(num1) + std::stoi(num2));
가 Live Demo를 참조입니다 그것은 내가 문자열을 정수로 변환 할 수 없습니다 작동하지 않습니다.
your comment에 같은 폭 넓은 답은
당신은 큰 정수 값으로 계산을하기 위해이 기술을 사용할 수 없습니다.
해당 타사 라이브러리를 사용해야합니다.
@ 존스 모크 그래, 나는 그것을 언급했다. –
,의는 10 + 3^47 (40), 그것의 한계 지났^가정 해 봅시다 모든 통합 데이터 유형 – RonthaDon
_ "숫자가 너무 큰 경우 문자열을 사용해야합니다"_ C++ 표준 기능 범위를 벗어났습니다. 이를 수행하려면 타사 라이브러리를 사용해야합니다. –
간단한 방법은 각 문자를 오른쪽에서 왼쪽으로 가져와 숫자로 변환하고 숫자를 더하고 합계를 문자로 변환 한 다음 결과 문자열에 문자를 추가하는 것입니다. 좋은 초등학교처럼. – user4581301