c++ string int
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ string int相关的知识,希望对你有一定的参考价值。
有这样一个字符串:
string str="1 54 6 23 234";
怎么把这些数字提取出来存到int数组里呢?(用C++)
字符串中数字的个数不确定
所以这里只能存到大小可变的容器中去(如,list,vector) 这里我是用vector
思路:
先将string中的字符串按delims(空格)分为几个小的字符串(数字组成的),然后对每一个小字符串用atoi()函数将其转换成对应的整数,然后将每个整数按顺序存到vector<int>中去:
#include <iostream>
#include <string>
#include <vector>
#include <cstring>
using namespace std;
int main ()
const string delims(" ");
string line;
vector<int> ivec; // containter for int
getline(cin, line);
string::size_type begIdx, endIdx;
begIdx = line.find_first_not_of(delims);
while (begIdx != string::npos)
endIdx = line.find_first_of(delims, begIdx);
if (endIdx == string::npos)
endIdx = line.length();
ivec.push_back(atoi(string(line, begIdx, endIdx-begIdx).c_str()));
begIdx = line.find_first_not_of(delims, endIdx);
for (vector<int>::const_iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
cout << *iter << ' ';
用上面的程序就能将string str="1 54 6 23 234";
中的1 54 6 23 234 等数字(int)提取出来!
顺便说一下:楼上的回答是最简便的C++实现! 参考技术A strlen()获得长度,getat(int)在一个一个的区。 参考技术B 将string转换成istringstream,然后用<<操作符读取到int变量中,用vector存储读取到的每个int。 包您满意哈~~
例子:
[15:34:39@~/c-cpp]$ cat a.cpp
#include<iostream>
#include<iterator>
#include<string>
#include<vector>
#include<sstream>
using namespace std;
int main()
string s = "1 54 6 23 234";
vector<int> v;
istringstream iss(s);
v.assign(istream_iterator<int>(iss),istream_iterator<int>());
copy(v.begin(), v.end(), ostream_iterator<int>(cout, "\n"));
[15:34:42@~/c-cpp]$ g++ a.cpp -Wall
[15:34:45@~/c-cpp]$ ./a.out
1
54
6
23
234
[15:34:48@~/c-cpp]$
C++语法小记---string和int的相互转换
string和int的相互转换
- string转int
1 istringstream is("12"); //构造输入字符串流,流的内容初始化为“12”的字符串 2 int i; 3 is >> i; //从is流中读入一个int整数存入i中
- int转string
1 int aa = 30; 2 stringstream ss; 3 ss<<aa; 4 string s1 = ss.str(); 5 cout<<s1<<endl; // 30
- 记忆:转成int就是i开头的类型,转成string就是s开头的类
以上是关于c++ string int的主要内容,如果未能解决你的问题,请参考以下文章