输入Input (cin)
cin >> age;
声明一个整型变量age然后等待用户从键盘输入到cin并将输入值存储在这个变量中。
cin 只能在键盘输入回车键(RETURN)后才能处理前面输入的内容。
当然你声明的是什么类型,就要相应的输入什么类型。cin和字符串
我们可以像读取基本类型数据一样,使用cin和>>操作符来读取字符串,例如:
但是,cin >> 只能读取一个单词,一旦碰到任何空格,读取操作就会停止。在很多时候这并不是我们想要的操作,比如我们希望用户输入一个英文句子,那么这种方法就无法读取完整的句子,因为一定会遇到空格。
要一次读取一整行输入,需要使用C++的函数 getline,相对于是用cin,我们更建议使用getline来读取用户输入。
例如:
// 读取字符串例子
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string mystr;
cout << "What's your name? ";
getline (cin, mystr);
cout << "Hello " << mystr << ".\n";
cout << "What is your favorite color? ";
getline (cin, mystr);
cout << "I like " << mystr << " too!\n";
system("pause");
return 0;
}
结果:
你可能注意到在上面的例子中,两次调用 getline 函数我们都是用了同一个字符串变量(mystr)。在第二次调用的时候,程序会自动用第二次输入的内容取代以前的内容。
字符串流 (stringstream)
标准头文件 <sstream> 定义了一个叫做 stringstream 的类,使用这个类可以对基于字符串的对象进行像流(stream)一样的操作。这样,我们可以对字符串进行抽取和插入操作,这对将字符串与数值互相转换非常有用。例如,如果我们想将一个字符串转换为一个整数,可以这样写:
string mystr ("1204");
int myint;
stringstream(mystr) >> myint;
这个例子中先定义了一个字符串类型的对象mystr,初始值为"1204",又定义了一个整数变量myint。然后我们使用 stringstream 类的构造函数定义了这个类的对象,并以字符串变量mystr为参数。因为我们可以像使用流一样使用stringstream 的对象,所以我们可以像使用cin那样使用操作符 >> 后面跟一个整数变量来进行提取整数数据。这段代码执行之后变量 myint 存储的是数值 1204 。
// 字符串流的使用示例
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
string mystr;
float price=0;
int quantity=0;
cout << "Enter price: ";
getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: ";
getline (cin,mystr);
stringstream(mystr) >> quantity;
cout << "Total price: " << price*quantity << endl;
system("pause");
return 0;
}
结果:
通过使用这种方法,我们可以对用户的输入有更多的控制,因为它将用户输入与对输入的解释分离,只要求用户输入整行的内容,然后再对用户输入的内容进行检验操作。这种做法在用户输入比较集中的程序中是非常推荐使用的。
goto 语句
通过使用goto语句可以使程序从一点跳转到另外一点。你必须谨慎只用这条语句,因为它的执行可以忽略任何嵌套限制。
跳转的目标点可以由一个标示符(label)来标明,该标示符作为goto语句的参数。一个标示符(label)由一个标识名称后面跟一个冒号colon (:)组成。
1.goto 语句可用于跳出深嵌套循环
#include<iostream>
using namespace std;
int main()
{
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
for(int k=0;k<2;k++)
{
cout<<i*j*k<<" ";
if(1==i*j*k)
goto part2;//break是跳不出多重循环的
}
cout<<"此处被省略"<<endl;
part2:
cout<<"part2"<<endl;
system("pause");
}
结果:
2.goto语句可以往后跳,也可以往前跳
- #include<iostream>
- using namespace std;
- int main()
- {
- int x,sum=0;
- //定义标号L1
- L1: cout<<"x=";
- cin>>x;
- if (x==-1)
- goto L2; //当用户输入-1时,转到L2语句处
- else
- sum+=x;
- goto L1; //只要用户没有输入-1,则转到L1语句处,程序一直将用户的输入默默地累加到变量sum中。
- //定义标号L2
- L2: cout<<"sum="<<sum<<endl;//一旦转到L2,将输出累计结果,程序运行结束。
- system("pause");
- }
3.也可以跳出switch,或者在case之间进行跳转
如:
- #include<iostream>
- using namespace std;
- int main()
- {
- char a;
- L1:
- cout<<"请输入一个字符"<<endl;
- cin>>a;
- switch(a)
- {
- case 'a':
- cout<<"case a"<<endl;
- goto L1;
- //break;
- L2:
- case 'b':
- cout<<"case b"<<endl;
- break;
- case 'c':
- cout<<"case c"<<endl;
- // break;
- goto L2;
- default:
- break;
- }
- system("pause");
- }
上述部分内容来自http://blog.csdn.net/generalhking/article/details/8011306