C++基础学习
来源:互联网 发布:苹果电脑数据恢复软件 编辑:程序博客网 时间:2024/05/18 02:53
要一次读取一整行输入,需要使用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"; return 0;}字符串流 (stringstream)
标准头文件 <sstream> 定义了一个叫做 stringstream 的类,使用这个类可以对基于字符串的对象进行像流(stream)一样的操作。这样,我们可以对字符串进行抽取和插入操作,这对将字符串与数值互相转换非常有用。例如,如果我们想将一个字符串转换为一个整数,可以这样写:
string mystr ("1204");int myint;stringstream(mystr) >> myint;数组赋值的常用方法是直接使用输入流(cin)。在这种情况下,字符序列的值是在程序运行时由用户输入的。
当cin 被用来输入字符序列值时,它通常与函数getline 一起使用,方法如下:
cin.getline ( char buffer[], int length, char delimiter = ' \n');
这里buffer 是用来存储输入的地址(例如一个数组名),length 是一个缓存buffer 的最大容量,而delimiter 是用来判断用户输入结束的字符,它的默认值(如果我们不写这个参数时)是换行符newline character ('\n')。
/ cin with strings
#include <iostream.h>
int main () {
char mybuffer [100];
cout << "What's your name? ";
cin.getline (mybuffer,100);
cout << "Hello " << mybuffer << ".\n";
cout << "Which is your favourite team? ";
cin.getline (mybuffer,100);
cout << "I like " << mybuffer << " too.\n";
return 0;
}cin >> mybuffer;
这种方法也可以工作,但它有以下局限性是cin.getline所没有的:
- 它只能接收单独的词(而不能是完整的句子),因为这种方法以任何空白符为分隔符,包括空格spaces,跳跃符tabulators,换行符newlines和回车符arriage returns。
- 它不能给buffer指定容量,这使得程序不稳定,如果用户输入超出数组长度,输入信息会被丢失。
因此,建议在需要用cin来输入字符串时,使用cin.getline来代替cin >>。
0 0
- C基础学习总结
- c基础学习 - 指针
- object-c 基础学习(-)
- c语言基础学习
- c语言基础学习
- c语言基础学习
- c 基础学习
- 学习C语言基础
- C 语言基础学习
- c语言基础学习
- C#/.NET 基础学习
- C语言基础学习
- c语言基础学习
- c基础学习
- C基础学习 详解
- C语言基础学习
- C基础学习
- C语言 基础学习
- 在jsp中关于"/" 的总结
- STL源码学习笔记(1):stack及自定义实现
- webrtc中的MethodCall0代码功能分析
- 中国剩余定理--生理周期
- Java NIO使用及原理分析 (四)
- C++基础学习
- linux 下简单的模拟QQ 聊天过程 UDP 通讯
- 我的C++第三周
- 服务器和客户端的通信绘图
- windows核心编程-线程调度,优先级和关联性
- 最大字段和——动态规划
- js模仿java的Map集合,实现功能
- 懒人果然是不行的
- 1062. Talent and Virtue