当问题在C++中以相反的顺序要求输入时如何显示用户输入字符串[关闭]
Posted
技术标签:
【中文标题】当问题在C++中以相反的顺序要求输入时如何显示用户输入字符串[关闭]【英文标题】:How to display user input string when questions ask for input in reverse order in C++ [closed] 【发布时间】:2021-05-19 20:06:27 【问题描述】:我最近开始学习 C++。我必须创建一个程序,询问用户的姓名和文件名;然后显示第一个类型(例如.cpp
)和后面的名称的文件名。必须能够接受负值。
我首先使用 repl.it 编写代码,然后粘贴到 .cpp
文件中进行编译。然后将使用命令make hello
将其与makefile 一起编译,并检查生成的程序是否可以正确编译和运行。
示例运行:
What's your name? John
What's the name of the output file? gen
gen.cpp:
#include <iostream>
int main()
std::cout << "Hello John!\n";
尝试:
#include <iostream>
using namespace std;
int main ()
string a;
cout << "What's your name?\n";
string b;
cout<< "Whats the name of this file?";
getline (cin,b);
cout<<"//"<<b;
getline (cin, a);
cout << "Hello " << a;
return 0;
除了在控制台中显示:
What's your name?
Whats the name of this file? //e.g.c
//c
输出错误,我犯了什么错误?获取期望值的正确方法是什么?
编辑:这是作业所说的:
【问题讨论】:
行的顺序似乎搞砸了。你不应该在询问用户名后直接getline (cin, a);
吗?
非常仔细地查看输出和输入的顺序。您首先打印这两个问题,然后然后调用getline
两次。这是你打算做的吗?
@TedLyngmo 我想打印 // gen.cpp 在名称之前,所以另一个例子是 1.name?mary 然后 2.outputfile 名称?你好;将显示 3.//hello.cpp 然后 4.Hello Mary
@Human-Compiler 是的,我希望它在 a 之前显示 b,如示例运行所示
你目前在做什么: 1. 打印第一个提示 2. 打印第二个提示 3. 读入第二个答案 4. 读入第一个答案 5. 打印第一个答案。听起来你想要做什么: 1. 打印第一个提示 2. 读入第一个答案 3. 打印第二个提示 4. 读入第二个答案 5. 打印第二个答案 6. 打印第一个答案。
【参考方案1】:
正如 cmets 中所述,您对 getline()
的调用位于错误的位置。试试这个:
#include <iostream>
#include <string>
using namespace std;
int main ()
string username;
cout << "What's your name?\n";
getline (cin, username);
string filename;
cout << "Whats the name of this file?";
getline (cin, filename);
cout << "//" << filename << ".cpp" << endl;
cout << "Hello " << username << endl;
return 0;
【讨论】:
非常感谢您的帮助,缺少的一个方面是将文件类型附加到文件名。例如而不仅仅是 //hello 它应该是 //hello.cpp 这也是我遇到的问题 这只是在<< filename
之后添加<< ".cpp"
的问题。我已经更新了我的示例来展示这一点。以上是关于当问题在C++中以相反的顺序要求输入时如何显示用户输入字符串[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 HBase REST curl 中以相反的顺序获取行
c++ 。我试图通过在开关内使用数组来获取用户输入,但是当我运行代码时它显示分段错误?