我一直試圖進入C++,但我甚至無法獲得最簡單的編程來爲我工作。C++字符串在多行上打印
while(true) {
cout << "."
string in;
cin >> in;
cout << "!" << in
}
我希望得到:
.1
!1
.1 2
!1 2
我實際上得到:
.1
!1
.1 2
!1.2
我一直試圖進入C++,但我甚至無法獲得最簡單的編程來爲我工作。C++字符串在多行上打印
while(true) {
cout << "."
string in;
cin >> in;
cout << "!" << in
}
我希望得到:
.1
!1
.1 2
!1 2
我實際上得到:
.1
!1
.1 2
!1.2
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] >
正是我以後。謝謝! –
如果你想讀整行,然後格式化輸入直接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';
}
}
雖然這不是真正的代碼,這是很明顯的你的意思是前兩個'cout'語句是外循環。做到這一點,並改變'cout << ">「<< cmd;'到'cout << ">」<< cmd <<'\ n';'你就完成了。 –
@VaibhavBajaj完美。謝謝。我會盡量讓它適應以後的工作。 :) –