今天学习结构体这块调试中时出现这样的错错误:cpp(16): error C3861: “setw”: 找不到标识符。
程序如下:
#include<iostream> using namespace std; struct person { char name[10]; int age; char tel[16]; char email[30]; }; struct person per; int main(int argc,char*argv[]) { cout<<"输入用户姓名、年龄、电话、邮箱地址:"<<endl; cin>>per.name>>per.age>>per.tel>>per.email; cout.flags(ios::left); cout<<setw(14)<<"姓名"<<setw(6)<<"年龄"<<setw(20) <<"电话"<<setw(32)<<"邮箱地址"<<endl; cout<<setw(14)<<per.name<<setw(6)<<per.age<<setw(20) <<per.tel<<setw(32)<<per.email<<endl; return 0; }
最后想了很久发现原来掉了一个#include <iomanip>,将其放在#include<iostream>和using namespace std之间,至于为什么少了#include <iomanip>就会出现“setw"找不到标示符,上网查了一下关于#include <iomanip>的介绍如下:
#include <iomanip>
io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。)其作用主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样。
setw( n ) 设域宽为n个字符这个控制符的意思是保证输出宽度为n。如:cout << setw( 3 ) << 1 << setw( 3 ) << 10 << setw( 3 ) << 100 << endl; 输出结果为_ _1_10100 (默认是右对齐)当输出长度大于3时(<<1000),setw(3)不起作用。setw(n)用法: 通俗地讲就是预设宽度如 cout<<setw(5)<<255<<endl;结果是255.