首页 > 代码库 > C++标准输入输出
C++标准输入输出
1,cout
1) 用来向标准输出打印。
2) 如果参数是char*类型,则直接输出字符串。如果想要输出地址,则需要强制转换:
<<static_cast<void*>(const_cast<char*>(pstr));
2,cin
1) 将标准输入读入变量,如果输入与变量声明类型不一致,则cin为false,可以用if判断,变量值不确定。
double price; //输入asdf
cout << price; //输出为0
2) cin结束后在缓存中会遗留有‘\n‘,因此会影响后续的get/getline。未不影响后续使用可以调用cin.ignore()
3, cout.get()和cout.getline()
1) 都是用来从标准输入读入内容,可以控制读入,cin遇到回车符就会结束,并且用空格分隔变量。get和getline则不同,它们可以控制读入的长度和分隔符。
2) 区别很小,都是用来读入流。同cin类似get不会从缓存中移除‘\n‘,getline则不同,可以清除。所以要么一直用cout/cin组合,要么一直用getline,getline,getline,不要用cin或者get后用get或getline。
4, read()和write()也是cout的函数,和标准的cout/cin不同的是它们可以控制输出和输入字节数。
5, 有个global函数getline挺好用的。
1 #include <iostream> 2 #include <string> 3 #include <stdio.h> 4 using namespace std; 5 6 int main() 7 { 8 //cout 9 cout << "cout test started..." << endl;10 const char* str = "adfadf";11 cout << "str is: " << str << endl;12 13 //cin14 //read input seperated by space15 //if input is not the cin type, cin will be false16 cout << "cin test started..." << endl;17 string sname;18 double price;19 cout << "Please enter name and price: " << endl;20 cin >> sname;21 if(!cin)22 cout << "the name is incorrect. " << endl;23 cin >> price;24 if(!cin)25 cout << "the price is incorrect. " << endl;26 cout << "The name is: " << sname 27 << " and the price is: " << price << endl;28 29 //cout ignore one \n30 cin.ignore();31 32 //get, address will fail to get because get left a \n after first call33 // // cout << "Enter your name:";34 // char name[SIZE];35 // // cin.get(name,SIZE);36 // // cout << "name:" << name;37 // // cout.put(name[0]);38 // // cout << "\nEnter your address:";39 // char address[SIZE];40 // // cin.get(address,SIZE);41 // // cout << "address:" << address << endl;42 43 //getline, address will succeed to get44 const int SIZE = 15;45 cout << "Enter your name:";46 char name[SIZE];47 cin.getline(name,SIZE);48 cout << "name:" << name;49 cout << "\nEnter your address:";50 char address[SIZE];51 cin.getline(address,SIZE);52 cout << "address:" << address << endl;53 54 //global function getline55 cout << "global getline test start" << endl;56 string ss;57 getline(cin, ss);58 cout << "ss is: " << ss << endl;59 60 //read, write61 char inchar[10];62 cin.read(inchar, 3);63 cout.write(inchar, 10);64 65 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。