我不知道这是否可行。
我的作业是将单词和短语翻译成C ++中的pig Latin。最快的方法是让用户在每个单词后点击输入,但是如果没有按Enter而不是空格键,这将导致输入连续短语。
your
text
would
be
entered
like
this
您的输出很容易:
youway exttay ouldway ebay enteredway ikelay histay
但仍然把信息放进去会很奇怪。
相反,我想强制程序将空格键视为输入键(回车)。
your text would be entered like this
这样每个单词都会从字符串中单独输入我的数组,用户只需要输入1次。
答案 0 :(得分:2)
您可以执行以下操作:
不是根据“如何将这些键更改为其他内容”来考虑这一点,而是根据“我如何才能最好地处理用户期望键入的内容”来考虑它。如果用户希望在单词之间键入空格(有意义),那么设计程序以便它可以处理这种输入。
答案 1 :(得分:0)
您可以将用户输入数据作为一行,因为这似乎很自然。
如果您需要一些帮助来解析一次操作的单词,那么请尝试另一个question。
答案 2 :(得分:0)
这是一种廉价的方法:
std::string in;
while (std::cin >> in)
std::cout << piglatin(in) << char(std::cin.get());
std::cin >> in
跳过输入流中的任何前导空格,然后用输入流中的下一个空白终止字填充in
,在输入流中留下空白终止。 char(std::cin.get())
然后提取该终结符(可能是空格或新行)。 while循环由文件结尾终止。
如果你理解,你可以使用它。
添加了:
以下是查找单词read是以空格还是换行终止的更好方法:
#include <cctype>
char look_for_nl(std::istream& is) {
for (char d = is.get(); is; d = is.get()) {
if (d == '\n') return d;
if (!isspace(d)) {
is.putback(d);
return ' ';
}
}
// We got an eof and there was no NL character. We'll pretend we saw one
return '\n';
}
现在黑客看起来像这样:
std::string in;
while (std::cin >> in)
std::cout << piglatin(in) << look_for_nl(std::cin);