我想知道是否可以在用户提供输入的同一行输出内容
int money;
cout << "How much money do you have?" << endl;
cin >> money;
//I want this to appear next to the user input
cout << " $";
我希望你知道我的意思,你可以提供帮助:)。
编辑:如果可能的话,我只是在徘徊,但似乎并非如此。至少不是标准的c ++,而是感谢所有试图提供帮助的人
答案 0 :(得分:1)
问题是,当您读取用户的输入时,终端界面会一直读到用户按下Enter键,并打印换行符,即光标移动到下一个终端线。然后,无论你打印什么,都会出现在下一行。
在纯粹独立于平台的C ++中,你无法真正避免这种情况,因为它需要在输入流的“引擎盖下”操作文件描述符:
(或两者兼而有之)。这可以在符合POSIX standard(s)的系统上以标准方式完成 - 但它很复杂。您可以在this SO answer中阅读更多相关信息;但最重要的是你应该用一个库来做到这一点。其中之一:
应该适合你。
PS:有时您的输入不是终端而是文件,您可能还需要检查是否是这种情况。
答案 1 :(得分:0)
我认为如果我正确阅读此内容,您只需将sudo
放在$
声明之前。
cin
然后它将在控制台上显示为
#include <iostream>
int main()
{
int money;
std::cout << "How much money do you have?" << std::endl;
std::cout << "$";
std::cin >> money;
return 0;
}
How much money do you have?
(在此插入输入)
答案 2 :(得分:0)
如果您想在输入$
旁边打印money
,一种方法是在输入并打印钱和$后移动一行并删除用户输入行在同一条线上。
即可以完成:
int money;
std::cout << "How much money do you have?" << std::endl;
std::cin >> money;
std::cout << "\033[F";
std::cout << money << " $";`
以下是answer
对Philipp Claßen的引用似乎是为了达到目的:)
答案 3 :(得分:-1)
你可以通过明智地使用逗号运算符来做任何事情。
int money;
std::cout << "How much money do you have?" << std::endl;
std::cin >> money, std::cout << money << " $";
将在一行上执行输入和输出。您可以通过将std::endl;
上的分号更改为另一个逗号,在同一行上完成所有三个。
我猜这不是你想要的。你想在没有变量的情况下直接使用std :: cin的输出,对吗?您可以使用逗号运算符更进一步:
int money;
std::cout << "How much money do you have?" << std::endl;
std::cout << (std::cin >> money, money) << " $";
您也可以将lambda用于此目的,但其语法开销大于我上面所写的
不幸的是,我不知道你可以摆脱格式化读取的两个步骤,然后返回变量,而不使用某种序列操作符(就像我做的那样)或坚持一个函数中的步骤(例如:a lambda),或使用一些不是标准C ++的格式化I / O例程(哪种类似于同一件事)。问题是&#34;&gt;&gt;&#34;是格式化输入的 C ++标准例程,该运算符用于返回流,而不是读取的变量。