我正在做一个作业,在其中我正在创建一个在主内存上工作的文本编辑器。 我不允许使用文件处理,也不允许使用字符串类字符串库或 CSTRING 库。现在我要实现的是,一行只包含 60 个字符,如果用户的输入超过 60 个字符,它应该自动移动到下一行,我还必须在用户输入时显示行号我的代码在这里
#include <iostream>
using namespace std;
int main()
{
char***files=new char**[50];
char**fileNames=new char*[50];
int fileCount=0;
while (true)
{
int selector=0;
cout<<"MacMAds Notepad"<<endl<<endl;
cout<<"Press 1. To Create a new file"<<endl;
cout<<"Press 2. To View an existing file by giving file name"<<endl;
cout<<"Press 3. To edit an existing file by giving its name"<<endl;
cout<<"Press 4. To copy an existing file to a new file"<<endl;
cout<<"Press 5. To delete an existing file by giving its name"<<endl;
cout<<"Press 6. To view listof all files with the names"<<endl;
cout<<"Press7. To Exit"
cin>>selector;
if (selector==7)
break;
if (selector==1)
{
cout<<"Please enter the name of file: ";
cin>>fileNames[fileCount];
int nLines=0;
cout<<"Please enter the number of lines for "<<fileNames[fileCount]<<": ";
cin>>nLines;
files[fileCount]=new char*[nLines];
for (int i=0;i<nLines;i++)
{
files[fileCount][i]=new char[61];
cin.getline(files[fileCount][i],60)
}
}
}
return 0;
}
现在我要实现的是,一行只包含 60 个字符,如果用户的输入超过 60 个字符,它应该自动移动到下一行
你不能使用来自std::cin
和std::getline()
的标准 c++ 缓冲输入来做到这一点,因为所有输入都需要使用 ENTER 键触发。
您需要拦截任何按键直接扫描键盘输入事件。这是特定于操作系统的功能,C++标准库未涵盖。
不过,有像ncurses
这样的第三方库,允许您以大部分独立于平台的方式执行此操作。
不能限制用户通过标准 c++ 库输入的字符数。