当前位置:   article > 正文

C++自制函数分享:input_input函数c++语言

input函数c++语言

思路

C++自带的输入函数大部分是以换行或空格结尾,如果想做出以下操作,就比较复杂了。 

问题

  1. 算式:
  2. 算式:[用户输入]
  3. 算式:[用户输入]+
  4. 算式:[用户输入]+[用户输入]
  5. 算式:[用户输入]+[用户输入]=答案

        (上例中“[用户输入]”内为用户手动输出,其余为自动弹出的提示)

优点

此函数虽结构不难,但写起来也不容易,一连串的bug和资料,可以为使用者节省许多时间。

要求

此函数已经在c++11测试过,在代码的开头需要添加名为conio.hiostreamstring的头文件和添加std命名空间,代码如下。

  1. # include<conio.h>
  2. # include<iostream>
  3. # include<string>
  4. using namespace std;

使用方法

此函数一共需要三个参数。

参数列表
类型变量描述
stringtip输入的提示,类似于python中input括号中的所填参数,在输入内容前面。
stringfill输入完成后将自动补充,比如上文“问题”栏中第3步补充的“+”,如果为空,则不补充。
charend

结束输入符,一旦用户输入此字符,会立刻停止输入。

此函数是有返回值的。

返回值
类型变量描述
stringtext用户所输入的内容,返回内容中不会包括“end”、回车和退格。

函数代码

  1. string input(string tip = "", string fill = "", char end = ' '){
  2. /*
  3. 作者:zhuo yue
  4. | 类型 |变量| 描述 |
  5. |string|tip |提示内容,在输入内容前面 |
  6. |string|fill|输入完成后末尾替换,无则不替换 |
  7. | char |end |输入完成的标记 |
  8. */
  9. // 错误检查
  10. if (end == '\0'){
  11. cout << "Error: The parameter \"end\" of the function \"input\" cannot be null" << endl;
  12. return "";
  13. }
  14. // 定义变量
  15. string text = "";
  16. int l = tip.size();
  17. char i = '\0';
  18. // 提示
  19. cout << tip;
  20. while (i != end or i != fill[0]){
  21. // 读取一个字符
  22. i = getch();
  23. // 判断输出
  24. if (i != '\r'){ // 检测回车
  25. if (i != '\b'){ // 检测退格
  26. if (i != end){ // 检测停止(停止符)
  27. if (i != fill[0]){ // 检测停止(补充符)
  28. // 正常加入和显示
  29. text += i;
  30. cout << i;
  31. l++;
  32. } else {
  33. cout << i;
  34. l++;
  35. fill = "";
  36. break;
  37. }
  38. } else {
  39. cout << " ";
  40. l++;
  41. break;
  42. }
  43. } else {
  44. if (l > tip.size()){
  45. text.pop_back();
  46. cout << "\b \b\b";
  47. l--;
  48. }
  49. }
  50. } else {
  51. cout << " ";
  52. l++;
  53. break;
  54. }
  55. }
  56. // 末尾字符替换
  57. if (fill != ""){
  58. cout << "\b" << fill;
  59. l--;
  60. }
  61. // 返回
  62. return text;
  63. }

使用例子

此处我们来完成一下问题中的内容。

  1. // 头文件
  2. # include<iostream>
  3. # include<string>
  4. # include<conio.h>
  5. using namespace std;
  6. // 函数
  7. string input(string tip = "", string fill = "", char end = ' '){
  8. /*
  9. 作者:zhuo yue
  10. | 类型 |变量| 表述 |
  11. |string|tip |提示内容,在输入内容前面 |
  12. |string|fill|输入完成后末尾替换,无则不替换 |
  13. | char |end |输入完成的标记 |
  14. */
  15. // 错误检查
  16. if (end == '\0'){
  17. cout << "Error: The parameter \"end\" of the function \"input\" cannot be null" << endl;
  18. return "";
  19. }
  20. // 定义变量
  21. string text = "";
  22. int l = tip.size();
  23. char i = '\0';
  24. // 提示
  25. cout << tip;
  26. while (i != end or i != fill[0]){
  27. // 读取一个字符
  28. i = getch();
  29. // 判断输出
  30. if (i != '\r'){ // 检测回车
  31. if (i != '\b'){ // 检测退格
  32. if (i != end){ // 检测停止(停止符)
  33. if (i != fill[0]){ // 检测停止(补充符)
  34. // 正常加入和显示
  35. text += i;
  36. cout << i;
  37. l++;
  38. } else {
  39. cout << i;
  40. l++;
  41. fill = "";
  42. break;
  43. }
  44. } else {
  45. cout << " ";
  46. l++;
  47. break;
  48. }
  49. } else {
  50. if (l > tip.size()){
  51. text.pop_back();
  52. cout << "\b \b\b";
  53. l--;
  54. }
  55. }
  56. } else {
  57. cout << " ";
  58. l++;
  59. break;
  60. }
  61. }
  62. // 末尾字符替换
  63. if (fill != ""){
  64. cout << "\b" << fill;
  65. l--;
  66. }
  67. // 返回
  68. return text;
  69. }
  70. // 主代码
  71. int main(){
  72. // 定义变量
  73. double a, b, ans;
  74. // 输入
  75. a = stod(input("算式:", "+"));
  76. b = stod(input("", "="));
  77. // 输出
  78. ans = a + b;
  79. cout << ans;
  80. return 0;
  81. }

好了,创作不易,请多多支持。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/360613
推荐阅读
相关标签
  

闽ICP备14008679号