通用解决方案(strstream)
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main()
{
string s="123,41,2,43";
stringstream ss(s);
vector <string> v;
string temp;
//函数原型istream& getline (istream& is, string& str, char delim); 将is流中的数据按delim切割放入str中
while(getline(ss,temp,',')) //可以按空格或其他char型切割
{
v.push_back(temp);
}
for(auto i:v)
cout<<i<<endl;
return 0;
}
读取一行个数未知的整数到vector或array中
1.输入:空格隔开的一行整数,例如1 2 3
Vector:
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
vector<int>numbers;
int enterNumber;
std::string line;
getline(cin, line);
istringstream iss(line);
while (iss >> enterNumber)
{
numbers.push_back(enterNumber);
}
for(int i=0;i<numbers.size();i++) //打印测试vector中的数据
cout<<numbers[i];
}
Array:
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
int arr[3]={NULL};//使用时注意定义数组长度
int k=0;
int enterNumber;
std::string line;
getline(std::cin, line);
std::istringstream iss(line);
while (iss >> enterNumber)
{
arr[k++]=enterNumber;
}
for(int i=0;i<sizeof(arr)/sizeof(int);i++)
cout<<arr[i];
}
2.输入:逗号隔开的一行整数,例如1,2,3
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
vector<int>numbers;
string input;
getline(cin,input);
istringstream is(input);
int inter;
char ch;
while (is >> inter)
{
numbers.push_back(inter);
is >> ch;
}
for(int i=0;i<numbers.size();i++)
cout<<numbers[i];
}
string中以int形式取出某一位
例如string str=”123456”;
int(s[0])取到的是1的ASCII码,此时减去’0’即将S[0]以int形式取出;
int a= int(s[0])-'0';
取int放入string中
方法1. stringstream(#include “sstream”)或者 strstream
例如
int n
cin>>n 输入65536
使得string=”65536”
#include <strstream>
int n;
cin>>n;
strstream ss;
ss<<n;
string s;
ss>>s;
方法2.c++11 新特性 to_string(int)
string to int
方法1 : 流
#include <iostream>
#include <sstream>
using namespace std;
int main(){
stringstream ss;
string s="122312";
ss<<s;
int a;
ss>>a;
cout<<a;
}
方法2 : c风格字符串atoi(str)
#include <iostream>
int main()
{
int n;
两种定义c风格字符串的方法,结尾均自动添加'\0'
char *str = "12345.67";
char str1[]="54321";
n = atoi(str1);
std::cout<<n;
return 0;
}
从文件中按行读取
#include <fstream>
#include <iostream>
using namespace std;
int main () {
ifstream ifile;
ifile.open("d:\\123.txt",ios::in);
if (ifile.is_open())
{
string a;
getline(ifile,a);
cout<<a;
ifile.close();
}
return 0;
}
写文件
#include <fstream>
#include <iostream>
using namespace std;
int main () {
ofstream ofile; //仅写,可以使用fstream类型,可以读写
ofile.open("d:\\123.txt",ios::app); //ios:app写在文件末尾,去掉此参数则覆盖原文件
if (ofile.is_open())
{
ofile<<"This is a test"<<endl;
ofile.close();
}
return 0;
}