将字符串中的所有数字相加
Adding all numbers from string
我试图将字符串中的所有数字相加,但我不知道如何添加2位数。例如:ab32d3我希望答案是35。这是我的代码:
int main()
{
int max=0,min=100000,sum=0,totalsum=0;
string s;
ifstream in ("Unos.txt");
while(getline(in,s))
{
cout<<s<<endl;
for(int i=0;i<s.length();++i)
{
if(s[i]>max)
{
max=s[i]-'0';
}
if(s[i]<min)
{
min=s[i]-'0';
}
if(isdigit(s[i]))
{
sum=10*sum+s[i]-'0';
}
else
{
totalsum+=sum;
sum=0;
}
}
}
totalsum+=sum;
cout<<"Najveci broj je: "<<max<<endl;
cout<<"Najmanji broj je: "<<min<<endl;
cout<<"Zbir svih brojeva je: "<<totalsum<<endl;
return 0;
}
试试这个:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
string str = "ab32d3", temp;
int sum = 0;
for ( int i = 0; i < str.size(); i++ ) {
if ( isdigit(str[i]) ) temp.push_back(str[i]);
else {
if ( temp.size() > 0 ) {
sum += stoi(temp);
temp = string();
}
}
}
// Last number (if exists)
if ( temp.size() > 0 ) sum += stoi(temp);
cout << sum << endl;
return 0;
}
它将打印35
#include <iostream>
#include <cctype>
int main() {
std::string s = "ab32d3";
int value_so_far = 0;
int total = 0;
for (int i = 0; i < s.length(); ++i)
{
if (isdigit(s[i])) { // This keeps a running total until the number ends
value_so_far = 10 * value_so_far + s[i] - '0';
} else { // Here the number has ended - Add to the total and reset
total += value_so_far;
value_so_far = 0;
}
}
// Got to the end - Add what is left!
total += value_so_far;
std::cout << "Ans:" << total << std::endl;
// your code goes here
return 0;
}
这是链接:表意代码。
请检查代码中关于解释的注释。
相关文章:
- 生成随机长度的数字字符串
- 如何在c ++中将大数字字符串转换为整数?
- 将非数字字符串存储为二进制整数
- Flex 词法分析器规则,对包含连字符和斜杠的字母数字字符串具有积极的前瞻断言
- 如何在C++中将数字字符串拆分为数组
- 总结数字字符串输入的最佳方法
- 如何将输入的数字字符串转换为 int 数组
- 如何获得两个数字字符串的总和-C
- 使用 C++ 替换 txt 文件中的文本数字字符串
- 如何有效地将数字字符串值分配给整数
- String Stream in C++ 解析单词和数字字符串
- c++将大型数字字符串映射到数字字符串范围
- 获取用数字字符串表示的树中的所有直接父级/子级
- 如何从 char 数组中提取数字字符串成员
- 比较两个字母数字字符串
- 有没有一种方法可以设置浮点变量=某个数字*字符串中的变量
- 使用矢量对字母数字字符串进行排序
- 正在分析未知类型的数字字符串
- 如何在c++中从一个科学数字字符串中修剪后面的零
- 无法将字符串数组中的数字字符串转换为浮点值