我一直在尝试使用C ++,但我甚至无法让最简单的编程为我工作。
while(true) {
cout << "."
string in;
cin >> in;
cout << "!" << in
}
我希望得到的东西:
.1
!1
.1 2
!1 2
我实际上得到了什么:
.1
!1
.1 2
!1.2
答案 0 :(得分:1)
如果你想读取整行,那么直接在std::cin
上格式化输入就不是了。请改用std::getline
。
大致相同:
#include <string>
#include <iostream>
int main() {
while(true) {
std::cout << "."
std::string in;
getline(std::cin, in);
std::cout << "!" << in << '\n';
}
}
答案 1 :(得分:1)
cin是从标准输入读取的流,可能不会以您期望的所有方式运行。提取运算符>>
从cin读取直到达到空格,因此cin >> cmd
仅将cmd设置为等于命令中的第一个单词。其余的单词仍然是cin,所以在程序打印后
> test
它再次循环,提示输入,并从cin读取test2
,而不是允许您向流中添加其他内容。
如果您想阅读整行,请使用getline。
#include <string>
using std::string;
#include <iostream>
using std::cin; using std::cout; using std::getline;
int main() {
while (true) {
cout << "\n\n";
cout << "[CMD] > ";
string cmd;
// Store the next line, rather than the next word, in cmd
getline(cin, cmd);
cout << "> " << cmd;
}
}
这可以按照您的预期执行:
[CMD] > test
> test
[CMD] > test test2
> test test2
[CMD] >