ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

C++输入输出、字符串分割

C++输入输出、字符串分割

目录

一、cin、cin.getline()、getline()

1、cin>>

2、cin.getline()

3、getline()

4、注意

二、字符串分割

1、strtok

2、stringstream


一、cin、cin.getline()、getline()

1、cin>>

//用法1:输入一个数字或字符 #include <iostream> using namespace std; main () { int a,b; cin>>a>>b; cout<<a+b<<endl; } //用法2:接收一个字符串,遇“空格”、“TAB”、“回车”就结束 #include <iostream> using namespace std; main () { char a[20]; cin>>a; cout<<a<<endl; }

2、cin.getline()

//接收一个字符串,可以接收空格并输出 /*1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符) 2、当第三个参数省略时,系统默认为'\0' 3、如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk*/ #include <iostream> using namespace std; main () { char m[20]; cin.getline(m,5);//接收5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出; cout<<m<<endl; }

3、getline()

用法:接收一个字符串,可以接收空格并输出,需包含“#include<string>” #include<iostream> #include<string> using namespace std; main () { string str; getline(cin,str); cout<<str<<endl; }

4、注意

当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

str="\n"; getline(cin,str); //或 getline()

的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

二、字符串分割

1、strtok

可以实现按多个字符分割字符串,需要导入库<cstring>

只能对char*进行分割,不能操作string,可以用strcpy将string转化为char*

#include<iostream> #include<cstring> using namespace std; int main(){ string material="1,2.3\n7,8,9,1,2 3,4,5,7,8,0,6,1"; char str[1024]; strcpy(str,material.c_str()); const char* cut=" ,.\n"; char* temp=strtok(str,cut); while(temp){ cout<<temp<<" "; temp=strtok(NULL,cut);//NULL参数令内部指针从上次结束位置继续 } }//结果为“1 2 3 7 8 9 1 2 3 4 5 7 8 0 6 1”

2、stringstream

需要包含“include<sstream>”

#include<iostream> #include<sstream> #include<vector> using namespace std; int main(){ string s="1,2.3,7,8,9,1,2,3,4,5,7,8,0,6,1"; //初始化 stringstream ss(s); //分隔出数字 vector<float> vec; //while读取ss中的字符,但无法分隔空格、回车 float t; char c; while(ss>>t){ vec.push_back(t); cout<<t<<" "; ss>>c; } //重置ss ss.clear(); ss.str(s); }//输出“1 2.3 7 8 9 1 2 3 4 7 8 0 6 1”
返回列表