c++ - 将打印的文本与之前的文本放在同一行
问题描述
我目前正在制作一个基本的程序设计,使其表现得有点像一个胆小鬼。代码在这里:
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <Windows.h>
#include <Stdio.h>
#include <string>
using namespace std;
main()
{
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE),10);
std::string name;
std::string pass;
std::string msg;
int x = 1;
srand(time(0));
cout << "Booting up system..." << endl;
cout << "Serial Code: " << (rand()%1000) << "." << endl;
cout << "Username: ";
std::getline(std::cin, name);
cout << "Password: ";
std::getline(std::cin, pass);
cout << "" << endl;
while (true)
{
cout<<x<<": ";
std::getline(std::cin, msg);
x += 1;
if (msg == "Hello!"){
cout << "Hi!" << endl;
}
if (msg == ""){
cout << "[No Text Inserted]" << endl;
}
system ("pause");
}
而且,如果没有输入文本,则会显示:
1:
[No Text Inserted]
我如何获得这个输出?
1: [No Text Inserted]
先感谢您!-DJ
解决方案
您可以做的是记住输入光标位置,如果输入是空字符串,请返回该位置并打印您的失败消息,如下所示:
#include <iostream>
#include <string>
#include <windows.h>
int main()
{
HANDLE conout = GetStdHandle(STD_OUTPUT_HANDLE);
std::string input;
std::cout << "Enter something: ";
// remember cursor position
CONSOLE_SCREEN_BUFFER_INFO info;
COORD inputPos = GetConsoleScreenBufferInfo(conout, &info) ? info.dwCursorPosition : COORD{ 0, 0 };
if (!std::getline(std::cin, input) || input.empty())
{
SetConsoleCursorPosition(conout, inputPos);
std::cout << "[No Text Inserted]" << std::endl;
}
}
推荐阅读
- html - 如何对齐这样的框?
- ember.js - 在 ember 上创建组件时。跳过 .js 文件?
- tensorflow - 如何使用冻结推理图来检测图像中的对象?
- c++ - MPI_Gather std::vector: 0 在收集的向量处输出
- authentication - 如何为 ejabberd 网站 (Debian) 注册用户
- java - 为什么每次使用 AWS KMS CMK 加密时都会得到不同的字节?
- oop - 使用派生类型在 Fortran 中定义具有多个加数的运算符(+)。可分配数组的问题
- javascript - Jquery access elements under li tag
- reactjs - 如何在 React Native 中构建可由多个组件访问的单个模态组件?
- haskell - 如何在do块中读取文件