[英]std::cout not working inside a for-loop
我是C ++的新手,現在我正在學習名為Accelerated C ++的書。 我完成了第三章(向量),我參加了這個練習:
“編寫一個程序來計算每個不同單詞在其輸入中出現的次數。”
經過一番思考,我開始研究它。 我想測試程序,但是std :: cout無法正常工作。 我把cout << "test";
在我的代碼中的幾個地方,看看問題在哪里,結論是它在第一個for循環中不起作用。 不建議我使用地圖來解決問題,因為我正在研究向量。 變量不是英文的,所以我會翻譯一些讓你知道發生了什么:
recenica - 句子; rijec - 一個字; vel_vektora - 向量的大小; duz_recenice - 句子的長度; br_ponavljanja - 單詞出現在句子中的次數;
#include <vector>
#include <iostream>
#include <string>
using std::string; using std::vector;
using std::cin; using std::cout;
using std::endl;
int main()
{
string rijec;
vector<string> recenica;
while (cin >> rijec) recenica.push_back(rijec);
cout << endl;
typedef vector<string>::size_type vel_vektora;
vel_vektora duz_recenice = recenica.size();
cout << "test0, ";
for (int i = 0; i < duz_recenice - 1; ++i)
{
cout << "test, !";
int br_ponavljanja = 1;
for (int j = i + 1; j < duz_recenice; ++j)
{
cout << "test2, ";
if (recenica[i] == recenica[j])
{
cout << "test3, ";
++br_ponavljanja;
recenica.erase(recenica.begin() + j);
}
cout << "test4, ";
}
cout << recenica[i] << ": " << br_ponavljanja << endl;
}
cout << "test5, ";
getchar();
return 0;
}
std::cout
有什么問題?
添加<< flush
以刷新輸出緩沖區(每個位置)。
或者使用<< endl
,它們都添加了換行符和刷新。
代碼存在問題,特別是對於空輸入,但這就是你要了解的內容,所以我會告訴你! :-)
干杯&hth。,
我擔心這個語言在變量名稱方面不能用,但這個“適用於我的工作原理”。
這是我的輸出(前三行輸入:)
ytreyert
tyryteter
gdhdfgdf
^Z
test0, test, !test2, test4, test2, test4, ytreyert: 1
test, !test2, test4, tyryteter: 1
test5,
你絕對應該在打印后嘗試沖洗cout緩沖區(根據Alf的回答)。
我注意到gdhdfgdf
沒有計算,這是因為這行:
for (int i = 0; i < duz_recenice - 1; ++i)
如果你只輸入1個輸入字,那么這個循環將不會運行,就像你執行duz_recenice = recenica.size();
在循環之前。
將此行更改為
for (int i = 0; i < duz_recenice; ++i)
解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.