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.aspxchar *字符串, *停止字符串;
字符串 = "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;
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 <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,的主要内容,如果未能解决你的问题,请参考以下文章