读取控制台输入的数据

    xiaoxiao2021-03-25  117

    通用解决方案(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; }
    转载请注明原文地址: https://ju.6miu.com/read-35516.html

    最新回复(0)