帮助我知道它有什么问题,因为我只是一个初学者,我正在尝试构建一个程序,要求用户输入短句,直到用户退出并以相反的顺序显示它们: 例 用户输入:
My name is Todd
I like to travel
并显示如下:
I like to travel
My name is Todd
任何人都可以帮助我使其正常运作; 它工作正常,但在执行后不会暂停它立即退出。我希望能够抓住窗户。 提前致谢
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main(int argc, char *argv[])
{
const int SIZE = 500;
char input[SIZE];
// collection that will hold our lines of text
vector<string> lines;
do
{ // prompt the user
cout << "Enter a short sentence(<enter> to exit): ";
cin.getline(input,SIZE);
if (!getline(cin, input) || input.empty())
break;
lines.push_back(input);
} while (true);
// send back to output using reverse iterators
// to switch line order.
copy(lines.rbegin(), lines.rend(),
ostream_iterator<string>(cout, "\n"));
// assume the file to reverse-print is the first
// command-line parameter. if we don't have one
// we need to leave now.
if (argc < 2)
return EXIT_FAILURE;
// will hold our file data
std::vector<char> data;
// open file, turning off white-space skipping
cin>>(argv[1]);
cin.seekg(0, cin.end);
size_t len = cin.tellg();
cin.seekg(0, cin.beg);
// resize buffer to hold (len+1) chars
data.resize(len+1);
cin.read(&data[0], len);
data[len] = 0; // terminator
// walk the buffer backwards. at each newline, send
// everything *past* it to stdout, then overwrite the
// newline char with a nullchar (0), and continue on.
char *start = &data[0];
char *p = start + (data.size()-1);
for (;p != start; --p)
{
if (*p == '\n')
{
if (*(p+1))
cout << (p+1) << endl;
*p = 0;
}
}
// last line (the first line)
cout << p << endl;
return EXIT_SUCCESS;
}
答案 0 :(得分:1)
我设法使用std::string
取代char input[SIZE]
来实现此目的。我还删除了循环中的cin.getline
部分,因为它并不是真的需要。
std::string input;
do {
// cin.getline(input, SIZE); <-- removed this line
if (!getline(cin, input) || input.empty())
break;
lines.push_back(input);
} while (true);
查看演示here。
答案 1 :(得分:0)
现在你说它工作正常......(可能你应该考虑将这个添加到你的帖子中,而不仅仅是在评论中)
您需要的是在执行完成后按住窗口。
然后,这很简单。
#include <cstdlib>
// whatever.....
int main(){
......//whatever
.......//foo
.......//bar
system("pause"); // hold the window
}
用虚拟无限循环替换system()
也应该有效,这可以节省#include <cstdlib>
,但会消耗CPU时间。