【发布时间】:2011-06-23 08:21:59
【问题描述】:
我是 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 有什么问题?
【问题讨论】:
-
我建议你在调试器中运行你的应用程序,一步一步地观察变量的值来找出问题所在。如果向量中只有一个单词,则外部 for 循环将不会执行
-
它是如何“不工作”的?
-
@Marius:+1 考虑极端情况总是一个很好的调试提示。
-
@ybungalobill 它没有给我任何输出。
-
FWIW,用英语命名变量是一件好事,即使你不是一个以英语为母语的人(比如我自己)。它对每个人都有帮助,而且您调用的所有 API/库都是英文的……(或者您是否将 std::vector 别名为 pl_std::vectory?;-P)