第一章的学习总计一天半。相较于第零章所学的基本内容:标准头文件<iostream>,字符串和“字符串直接量”、作用域{}、名字空间std::、输出cout。第一章的学习内容主要是输入std::cin>>;string库定义变量、用()和字符直接量‘ ’构建变量、“+”的左结合等。
下面依次进行详述。
#include<iostream> #include<string> int main() { std::string name; std::cin>>name; std::cout<<"Hello,"<<name<<"!"<<std::endl; return 0; }
用std::string name在花括号中定义了名为name的局部变量。并使用std::cin>>name将输入值读取进name变量中。
#include<iostream> #include<string> int main() { std::cout<<"Hello,Whats your name?"; std::string name;//构建name变量 std::cin>>name;//读取输入的值存入name中 //用+连接变量和字符串直接量 const std::string greeting="Hello,my name is"+name+"."; const std::string ask="And what is yours?"; std::cin>>name; const std::string answer="My name is"+name+",nice to meet you."; //进行输出 std::cout<<std::endl; std::cout<<greeting<<std::endl; std::cout<<ask<<std::endl; std::cout<<answer<<std::endl; return 0; }
输出结果为:
Hello,Whats your name? Mike Zhang Hello,my name isMike. And what is yours? My name isZhang,nice to meet you.
//这样编写虽然实现了打招呼的目的,但却只能一下打出两个名字,不能先打出一个名字,等“And what is yours?”显示出来以后再打另一个名字完成交互。针对这个情况,改变一下编程模式。
#include<iostream> #include<string> int main() { {std::cout << "Hello,Whats your name?" << std::endl; std::string name;//构建name变量 std::cin >> name;//读取输入的值存入name中 //用+连接变量和字符串直接量 const std::string greeting = "Hello,my name is " + name + "."; const std::string ask = "And what is yours?"; std::cout << greeting << std::endl; std::cout << ask << std::endl; } { std::string name; std::cin >> name; const std::string answer = "My name is " + name + ",nice to meet you."; std::cout << answer << std::endl; } return 0; }
用花括号将两段程序分开,分别定义局部变量name。将最后统一进行输出的指令整合到每行程序中。
输出结果如下:
Hello,Whats your name? Li Hello,my name is Li. And what is yours? Zhang My name is Zhang,nice to meet you.
完美~
const std::string A(10,'*') ; const std::string B(A.size,' ');
意为定义一个名为A的变量,内容为十个‘*’符号。再定义一个名为B的变量,与A同等长度,内容为空格。
注意这里用的是‘ ’单引号来表示字符直接量。A.size是一个调用的函数,用来构造一个和A相同长度的变量B。
输入:is>>s;把内容输入进变量s中
输出:os<<s;把s输出进输出流。
第一章学习内容总结完毕。