在同一行上的cin之后添加百分号

时间:2015-10-03 14:09:15

标签: c++ symbols

=

我需要编写代码,以便当用户输入提示金额时,系统会在其后面分配一个%符号。我已经在我的代码中包含了我要问的行是if语句之后的前两行。

谢谢!

4 个答案:

答案 0 :(得分:0)

只需改变:

cin>>tip;cout<<"percent"<<endl;

为:

cin>>tip;cout<<'%'<<endl;

答案 1 :(得分:0)

输入数据时看到的输出是默认系统输入产生的输出。它通常直接回送输入的字符,包括使用输入时的换行符。

如果您确实需要在输入的同一行输出内容,则需要更改默认输入的工作方式。在UNIX系统上,您可以使用tcgetattr()tcsetattr()执行此操作。我认为您需要将控制台设置设置为非规范且不响应。

这样做,你需要自己处理回声字符。也就是说,您需要编写输入的每个字符。您可以通过从std::cin进行特征性阅读并根据std::cout编写适当的字符来实现。您需要收集字符串中的字符以将其转换为值。

答案 2 :(得分:0)

你可能使用getch()或getche()(在Windows上)或linux上的类似implementation来破解它。 这段代码只描述了一个大致的想法:你捕获用户输入的符号,并使用\ r \ n特殊字符(回车的ASCII代码,阅读更多here)一次又一次地重写字符串。你甚至可以禁止非数字符号!

这种方法不是很好,因为你必须发明一个轮子而不是使用现有的解决方案,但它可能仍然可以用来解决你的问题。

#include <stdio.h>
#include <conio.h>

int main(void) {
  // You'll certainly have to modify it =)
  char c1, c2;
  printf("Input:  %%");
  c1 = getch();
  printf("\rInput: %c%%", c1);
  c2 = getch();
  printf("\rInput:%c%c%%", c1, c2);
}

答案 3 :(得分:-1)

void input(double &tip){
  char A[10];
  cin>>A;

  int bd = 0,i = 0;
  int ad = 0;
  double di = 1;

  for(i = 0; (A[i] != '.') && (A[i]!='%') && (A[i] != '\0');i++){
      bd = bd*10 + (57-A[i]);
  }

  for(i += 1; (A[i]!='%') && (A[i] != '\0');i++){
      ad = ad*10 + (57-A[i]);
      di *= 10;
  }

  tip = bd + ad/di;
}

使用此功能yoy可以输入23.12%或类似的东西。此函数将字符串作为输入,然后提取要分配给tip变量的值。