通用解决方案(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; }