c++中如何将字符串类似于s="1 2 3 4 5 6 7 8 9"转换成整型数组a=1,2,3,4,5,6,7,8,9,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中如何将字符串类似于s="1 2 3 4 5 6 7 8 9"转换成整型数组a=1,2,3,4,5,6,7,8,9,相关的知识,希望对你有一定的参考价值。

如题,最好能把函数名字给出来,并且代码写一下,非常感谢,在线跪求

参考技术A http://msdn.microsoft.com/zh-cn/library/kxsfc1ab.aspx
char *字符串, *停止字符串;

字符串 = "3.1415926这停止了";
double 浮点数 = strtod(字符串, &停止字符串);
printf("strtod函数 = %f\n", 浮点数);
printf("扫描: %s\n", 停止字符串);

字符串 = "1415926";
int 整数 = strtod(字符串, &停止字符串);
printf("strtod函数 = %d\n", 整数);

字符串 = "-10110134932这停止了";
long 有符号 = strtol(字符串, &停止字符串, 10);
printf("strtol函数 = %ld\n", 有符号);

for (int 基础 = 2; 基础 <= 8; 基础 *= 2)

unsigned long 无符号长整型 = strtoul(字符串, &停止字符串, 基础);
printf("strtol函数 = %ld (基础 %d)\n", 无符号长整型, 基础);
printf("扫描: %s\n", 停止字符串);
参考技术B int main()

    int a[100], j = 0;
    string s = "1 2 3 4 5 6 7 8 9";
    for(int i = 0; i < s.size();)
            
        a[j] = s[i] - '0';
        j++;
        i = i + 2;       //字符串中以空格作为间隔
    
    for(int i = 0; i < j; i++)  //j 即是整型数组的长度
    cout << a[i] << endl;
    system("pause");
    return 0; 

追问

请问如果数字为数不固定呢,比如是“1 11 123 23”类似这样的呢额

追答

int main()

int a[100], j = 0, tmp;
string s = "1 2 333 4 5 6 21347 8 9";
for(int i = 0; i < s.size();)

tmp = 0;
while(' ' != s[i])

tmp = tmp * 10 + (s[i] - '0');
i++;
if(i == s.size())
break;

a[j] = tmp;
j++;
i++;

for(int i = 0; i < j; i++)
cout << a[i] << endl;
system("pause");
return 0;

本回答被提问者采纳
参考技术C for(int i = 0; i != 9; ++i)
i[i] = s[i] - '0';
追问

请问您这个i是int型数组,s是string类型数组是吧,可是为什么在vc2008上运行不成功呢,编译可以,但是不能运行

追答

对,怎么不能运行?你把你的代码发过来吧

追问

int main()
int number[4]=;
cout>min;
for(int i=0;i<3;i++)
number[i]=min[i]-'0';

int n=number[0];
int m=number[1];
int q=number[2];
cout<<n<<m<<q<<endl;

追答

你都没有#include和,也没有using namespace std;

追问

这个是因为追问容不下了,被我自己删去了,实际的代码中是有的,不然也不可能被编译过去

追答

追问

然后就会出现这个问题

追答

你加了空格那个string对象就只接受了一个字符,你取min[1]不就越界了

追问

但是我这个题目意思就是这个样子呀,就是输入多个数字到一个字符串,之间用空格隔开,然后在赋值到int数组中

追答

题目发上来

追问

追答#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
int main()
 string str;
 vector<int> ivec;
 vector<string> svec; 
 int temp = 0, t;
 while (cin >> str)
  svec.push_back(str);
 
 for (auto &s : svec)
  temp = 0;
  t = 1;
  for (auto it = s.begin(); it != s.end(); ++it)
   for (decltype(s.end() - it) i = 1; i != s.end() - it; ++i)
    t *= 10;
   temp += (*it - '0') * t;
   t = 1;
  
  ivec.push_back(temp);
 
 for (auto i : ivec)
  cout << i << endl;
 
 system("PAUSE");
 return 0;

以上是关于c++中如何将字符串类似于s="1 2 3 4 5 6 7 8 9"转换成整型数组a=1,2,3,4,5,6,7,8,9,的主要内容,如果未能解决你的问题,请参考以下文章

C++函数如何传递字符串?

C++中关于返回空指针问题

C++字符串数字前补0

C++中怎么将WCHAR字符串转换成CHAR字符串?

获取 optarg 作为 C++ 字符串对象

如何更正用户输入(类似于谷歌“你的意思是啥?”)