C++ stringstream格式化输出输入探索

getline(),可得到一行字符串;

  1. cin.getline(s,k);
    接收一行中k个字符,可以接收空格,cin.getline()实际有三个参数,cin.getline(字符串,接收个数,结束字符);当第三个参数省略时,系统默认为’\0’;
    \n表示换行符; \0表示字符串结束标识符

  2. getline(cin,s);
    和cin.getline()类似,读入一行字符串,值得注意的是cin.getline()属于istream流,而getline()属于string流,二者并不相同。

  3. cin.get() 用于单字符的输入

while(cin >> str){
     
        strs.push_back(str);
        if(cin.get() == '\n'){
     
            sort(strs.begin(), strs.end());
            for(int i = 0; i<strs.size()-1; i++)
                cout << strs[i] << ' ';
            cout << strs[strs.size()-1]<<endl; 
            strs.clear();
        }
    }

istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
stringstream类同时可以支持C风格的串流的输入输出操作。
要使用他们创建对象就必须包含sstream.h头文件
C++ stringstream格式化输出输入探索_第1张图片

然后stringstream的作用就是从string对象读取字符或字符串

#include
#include  
using namespace std;<pre name="code" class="cpp">int main(){
     
	string test = "-123 9.87 welcome to, 989, test!";
	istringstream iss;//istringstream提供读 string 的功能
	iss.str(test);//将 string 类型的 test 复制给 iss,返回 void 
	string s;
	cout << "按照空格读取字符串:" << endl;
	while (iss >> s){
     
		cout << s << endl;//按空格读取string
	}
	cout << "*********************" << endl;
 
	istringstream strm(test); 
	//创建存储 test 的副本的 stringstream 对象
	int i;
	float f;
	char c;
	char buff[1024];
 
	strm >> i;
	cout <<"读取int类型:"<< i << endl;
	strm >> f;
	cout <<"读取float类型:"<<f << endl;
	strm >> c;
	cout <<"读取char类型:"<< c << endl;
	strm >> buff;
	cout <<"读取buffer类型:"<< buff << endl;
	strm.ignore(100, ',');
	int j;
	strm >> j;
	cout <<"忽略‘,’读取int类型:"<< j << endl;
 
	system("pause");
	return 0;
}

参考链接:getline函数详解

你可能感兴趣的:(编程语言)