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

📅 2026/8/15 20:35:32
C++输入输出、字符串分割
目录一、cin、cin.getline()、getline()1、cin2、cin.getline()3、getline()4、注意二、字符串分割1、strtok2、stringstream一、cin、cin.getline()、getline()1、cin//用法1输入一个数字或字符 #include iostream using namespace std; main () { int a,b; cinab; coutabendl; } //用法2接收一个字符串遇“空格”、“TAB”、“回车”就结束 #include iostream using namespace std; main () { char a[20]; cina; coutaendl; }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个字符输出 coutmendl; }3、getline()用法接收一个字符串可以接收空格并输出需包含“#includestring” #includeiostream #includestring using namespace std; main () { string str; getline(cin,str); coutstrendl; }4、注意当同时使用cin,getline()时需要注意的是在cin输入流完成之后getline()之前需要通过str\n; getline(cin,str); //或 getline()的方式将回车符作为输入流cin以清除缓存如果不这样做的话在控制台上就不会出现getline()的输入提示而直接跳过因为程序默认地将之前的变量作为输入流。二、字符串分割1、strtok可以实现按多个字符分割字符串需要导入库cstring只能对char*进行分割不能操作string可以用strcpy将string转化为char*#includeiostream #includecstring using namespace std; int main(){ string material1,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* tempstrtok(str,cut); while(temp){ couttemp ; tempstrtok(NULL,cut);//NULL参数令内部指针从上次结束位置继续 } }//结果为“1 2 3 7 8 9 1 2 3 4 5 7 8 0 6 1”2、stringstream需要包含“includesstream”#includeiostream #includesstream #includevector using namespace std; int main(){ string s1,2.3,7,8,9,1,2,3,4,5,7,8,0,6,1; //初始化 stringstream ss(s); //分隔出数字 vectorfloat vec; //while读取ss中的字符,但无法分隔空格、回车 float t; char c; while(sst){ vec.push_back(t); coutt ; ssc; } //重置ss ss.clear(); ss.str(s); }//输出“1 2.3 7 8 9 1 2 3 4 7 8 0 6 1”