Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有一种方法可以使用c+实时读取文本+;?_C++_String_Data Structures_Linked List_Console - Fatal编程技术网

C++ 有没有一种方法可以使用c+实时读取文本+;?

C++ 有没有一种方法可以使用c+实时读取文本+;?,c++,string,data-structures,linked-list,console,C++,String,Data Structures,Linked List,Console,基本上我要做的是一个控制台程序,它必须读取我键入的每个字符,并且在键入时必须将每个字符存储在一个链表中。但是,如果要执行退格操作,则在执行该操作时必须将该字符从结构中删除 有什么方法或功能可以做到这一点吗?我正在使用Windows。您可以在Windows下使用conio.h。您只需在while循环中读取和处理任何键盘输入。下面是一个简单的例子: #include <conio.h> #include <iostream> #include <list> in

基本上我要做的是一个控制台程序,它必须读取我键入的每个字符,并且在键入时必须将每个字符存储在一个链表中。但是,如果要执行退格操作,则在执行该操作时必须将该字符从结构中删除


有什么方法或功能可以做到这一点吗?我正在使用Windows。

您可以在Windows下使用
conio.h
。您只需在
while
循环中读取和处理任何键盘输入。下面是一个简单的例子:

#include <conio.h>
#include <iostream>
#include <list>

int main()
{
    std::list<char> myChars; // to store what your chars
    std::cout << "START WRITING: ";
    while(true)
    {
        // read the character and perform some logic
        char val = _getch();
        if (static_cast<int>(val) == 8) // backspace: pop_back
        {
            myChars.pop_back();
            std::cout << "\b" << " " << "\b";
            /* no idea how to go up to the previous line in a console :( */
        }
        else if (static_cast<int>(val) == 13) // enter/return: new line
        {
            myChars.push_back('\n');
            std::cout << "\n";
        }
        else if (static_cast<int>(val) == 27) // escape: exit
        {
            break;
        }
        else // push_back
        {
            myChars.push_back(val);
            std::cout << val;
        }
    }
#包括
#包括
#包括
int main()
{
std::list myChars;//存储您的字符

std::cout您可以在windows下使用
conio.h
。您只需在
while
循环中读取和处理任何键盘输入。以下是一个简单的示例:

#include <conio.h>
#include <iostream>
#include <list>

int main()
{
    std::list<char> myChars; // to store what your chars
    std::cout << "START WRITING: ";
    while(true)
    {
        // read the character and perform some logic
        char val = _getch();
        if (static_cast<int>(val) == 8) // backspace: pop_back
        {
            myChars.pop_back();
            std::cout << "\b" << " " << "\b";
            /* no idea how to go up to the previous line in a console :( */
        }
        else if (static_cast<int>(val) == 13) // enter/return: new line
        {
            myChars.push_back('\n');
            std::cout << "\n";
        }
        else if (static_cast<int>(val) == 27) // escape: exit
        {
            break;
        }
        else // push_back
        {
            myChars.push_back(val);
            std::cout << val;
        }
    }
#包括
#包括
#包括
int main()
{
std::list myChars;//存储您的字符

STD:当然,有很多方法可以做到这一点。但是我想,如果你不知道基本原理(至少看起来像是这样),你可能会读到一些C++书籍,而不是问这样一个问题。这是thjat的操作系统所依赖的。例如,在Linux上,您将tty置于原始模式,并一次处理一个字符的输入。不指定操作系统,就不可能有权威的答案。这是否回答了您的问题?也许有人可以告诉我为什么
std::cin.get()
在循环中不是答案吗?为什么这被认为是依赖于操作系统的?因为我有一个使用
std::cin.get()的介绍赋值“SuxeSee”我认为OS依赖的部分是因为退格键。当然,有很多方法可以做到这一点。但是我想,为了获得这些知识,你可能会读到一些C++书籍,而不是在不知道基本原理(至少看起来像是这样)的情况下问这样一个问题。这是thjat的操作系统所依赖的。例如,在Linux上,您将tty置于原始模式,并一次处理一个字符的输入。不指定操作系统,就不可能有权威的答案。这是否回答了您的问题?也许有人可以告诉我为什么
std::cin.get()
在循环中不是答案吗?为什么这被认为是依赖于操作系统的?因为我有一个在循环中使用
std::cin.get()
的介绍赋值。@sweenish我认为依赖于操作系统的部分是因为退格键。