【发布时间】:2017-03-27 12:27:24
【问题描述】:
我知道已经有几个关于这个主题的问题得到了解答,但没有一个可以帮助我解决我的问题。请记住,我刚刚开始学习 C++ 编程。
我正在创建一个程序来读取文本,然后将其显示在 N 行 x M 列中(由用户输入)。因此,如果用户编写 HarryPotter 并希望它显示在 3 x 4 数组中,它应该看起来像这样:
H a r r
y P o t
t e r
我已经用这段代码做到了:
cout << "Number of rows: ";
cin >> nr;
cout << "Number of columns: ";
cin >> nc;
cout << "Type in text: ";
cin >> text;
char letters[100][100];
for (int row = 0; row < nr; row++)
{
for (int col = 0; col < nc; col++)
{
letters[row][col]= text [i];
i++;
}
}
cout << "Print array: " << endl;
for (int row = 0; row < nr; row++)
{
for (int col = 0; col < nc; col++)
{
cout << letters[row][col];
}
cout << "\n";
}
在用户写出多个单词之前,它都能正常工作。例如,他写了 Harry Potter 而不是 HarryPotter(我认为单词之间的空格是造成问题的原因)。你知道为什么会发生这种情况,我该如何解决?非常感谢。
【问题讨论】:
-
可变文本是如何定义的?如果二维数组的元素总数大于文本中的字符数怎么办?
-
您还应该在输入文本的末尾添加 null 终止
-
我怀疑
std::getline很快就会出现在你的未来。 -
你应该像here一样使用
cin.getline()
标签: c++ arrays string algorithm multidimensional-array