Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c+中将字符串的某些部分转换为int/double+;_C - Fatal编程技术网

在c+中将字符串的某些部分转换为int/double+;

在c+中将字符串的某些部分转换为int/double+;,c,C,我正在尝试将字符串的某些数字转换为int/double。但我犯了个错误。我必须从字符串中找到数字,然后求和 输入示例 预期结果 我试着这样做: #include <iostream> #include <string> #include <stdio.h> #include <stdlib.h> #include <ctype.h> using namespace std; string s="96h11k4959q615948s50

我正在尝试将字符串的某些数字转换为int/double。但我犯了个错误。我必须从字符串中找到数字,然后求和

输入示例 预期结果 我试着这样做:

#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;

string s="96h11k4959q615948s50922o38h1453ij38w73413d5577lzrqw3780b389750vf100zd29z73j5wh73l6965n85vm77cw10awrjr29265289222238n10013uk10062f9449acbhfgcm35j78q80";
double sum;
int d;
int main()
{
    for(int i=140;i<s.size();i++)
    {
       if(isdigit(s[i]))
       {
           cout<<s[i]<<endl;
           //d= atoi(s[i].c_str());
           //another try.
           /*istringstream buffer(s[i]);
           buffer >> d;
           cout<<"int "<<d<<endl;*/
       }
    }
   return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
字符串s=“96H11K4959Q615948S50922O38H1453IJ38W73413D5577LZRQW3780B389750VF100ZD29Z73J5WH73L6965N85VM77CW10AWJR2265289222238N10013UK10062F9449ACBHFGCM35J78Q80”;
双和;
int d;
int main()
{
对于(inti=140;i尝试以下方法:

for(int i=0;i<s.size();i++)
{
   // Read the number
   if(isdigit(s[i]))
   {
       cout<<s[i]<<endl;
       d = d * 10 + s[i]-'0' ;
   }
   else //add it when a separator is found
   {
       sum += d;
       d = 0;
   }
}
for(inti=0;i尝试以下方法:

for(int i=0;i<s.size();i++)
{
   // Read the number
   if(isdigit(s[i]))
   {
       cout<<s[i]<<endl;
       d = d * 10 + s[i]-'0' ;
   }
   else //add it when a separator is found
   {
       sum += d;
       d = 0;
   }
}
for(inti=0;i尝试以下方法:

for(int i=0;i<s.size();i++)
{
   // Read the number
   if(isdigit(s[i]))
   {
       cout<<s[i]<<endl;
       d = d * 10 + s[i]-'0' ;
   }
   else //add it when a separator is found
   {
       sum += d;
       d = 0;
   }
}
for(inti=0;i尝试以下方法:

for(int i=0;i<s.size();i++)
{
   // Read the number
   if(isdigit(s[i]))
   {
       cout<<s[i]<<endl;
       d = d * 10 + s[i]-'0' ;
   }
   else //add it when a separator is found
   {
       sum += d;
       d = 0;
   }
}

for(int i=0;i您必须首先检查字符是否为数字。您可以使用ascii表执行此操作。数字范围为48到57(ascii)。

您必须首先检查字符是否为数字。您可以使用ascii表执行此操作。数字范围为48到57(ascii).

您必须首先检查字符是否为数字。您可以使用ascii表执行此操作。数字范围为48到57(ascii)。

您必须首先检查字符是否为数字。您可以使用ascii表执行此操作。数字范围为48到57(ascii).

使用您最初的
std::istreamstream
方式:

std::istringstream buffer( s );
char c ;
do{
    long d ; 
    while( buffer >> d  ) // Keep on extracting digits until failure
    {
        sum += d ;
    }
    buffer.clear( ) ; // clear flags
}while( buffer >> c ) ; // Keep extracting chars

使用您的初始
std::istreamstream
方式:

std::istringstream buffer( s );
char c ;
do{
    long d ; 
    while( buffer >> d  ) // Keep on extracting digits until failure
    {
        sum += d ;
    }
    buffer.clear( ) ; // clear flags
}while( buffer >> c ) ; // Keep extracting chars

使用您的初始
std::istreamstream
方式:

std::istringstream buffer( s );
char c ;
do{
    long d ; 
    while( buffer >> d  ) // Keep on extracting digits until failure
    {
        sum += d ;
    }
    buffer.clear( ) ; // clear flags
}while( buffer >> c ) ; // Keep extracting chars

使用您的初始
std::istreamstream
方式:

std::istringstream buffer( s );
char c ;
do{
    long d ; 
    while( buffer >> d  ) // Keep on extracting digits until failure
    {
        sum += d ;
    }
    buffer.clear( ) ; // clear flags
}while( buffer >> c ) ; // Keep extracting chars



为什么
int i=140;
而不是
int i=0;
?你会得到什么错误?你不能对字符串求和..dou?Desktop\code\try2.cpp | 22 |错误:在's.std::basic_string::operator[](std::basic_string::size_type)i)),这是非类类型的'char'|..d=atoi(s[i].c|str());我从上一个开始试过..这样我就可以确定它是否工作..如果工作..整个事情都会工作..@sahuWhy
inti=140;
而不是
inti=0;
?你得到了什么错误?你不能对字符串求和..你做了吗?桌面\code\try2.cpp | 22 |错误:在's.std::basic_string::operator[](((std::basic_string::size_type)i)),对于d=atoi(s[i].c_str(),它是非类类型“char”|...);我从上一个开始试过..这样我就可以确定它是否工作..如果工作..整个事情都会工作..@sahuWhy
inti=140;
而不是
inti=0;
?你得到了什么错误?你不能对字符串求和..你做了吗?桌面\code\try2.cpp | 22 |错误:在's.std::basic_string::operator[](((std::basic_string::size_type)i)),对于d=atoi(s[i].c_str(),它是非类类型“char”|...);我从上一个开始试过..这样我就可以确定它是否工作..如果工作..整个事情都会工作..@sahuWhy
inti=140;
而不是
inti=0;
?你得到了什么错误?你不能对字符串求和..你做了吗?桌面\code\try2.cpp | 22 |错误:在's.std::basic_string::operator[](((std::basic_string::size_type)i)),它是非类类型“char”|..对于d=atoi(s[i].c_str()),我从最后一个开始尝试..这样我就可以确定它是否工作..如果工作..整个事情都会工作..@sahu
s[i]
返回一个字符。
.c_str
既不需要也不可用。获取此错误….C:\Desktop\code\try2.cpp | 20 |错误:从“char”到“const char*”的转换无效[-fppermission]@mishir.ali第20行是什么?@mishir.ali顺便问一句,如果答案有帮助,请将其标记为选定答案;
s[i]
返回一个字符。
.C\u str()
既不需要也不可用。获取此错误….C:\Desktop\code\try2.cpp | 20 |错误:从“char”到“const char*”的转换无效[-fppermission]@mishir.ali第20行是什么?@mishir.ali顺便问一句,如果答案有帮助,请将其标记为选定答案;
s[i]
返回一个字符。
.C\u str()
既不需要也不可用。获取此错误….C:\Desktop\code\try2.cpp | 20 |错误:从“char”到“const char*”的转换无效[-fppermission]@mishir.ali第20行是什么?@mishir.ali顺便问一句,如果答案有帮助,请将其标记为选定答案;
s[i]
返回一个字符。
.C\u str()
既不需要也不可用。获取此错误…C:\Desktop\code\try2.cpp | 20 |错误:从“char”到“const char*”的转换无效[-fppermission]|@mishir.ali第20行是什么?@mishir.ali顺便问一下,如果答案有帮助,请将其标记为选定答案;)