【发布时间】:2010-09-27 19:33:54
【问题描述】:
我是一名 CS 学生,试图掌握一些 C++ 基本概念。 我正在尝试从 std::cin 获取用户的输入并将其放入数组中。
示例:
输入 > ab ba cd[Entey 键被按下] 那么我希望数组包含 [ab][ba][cd]。
到目前为止我有:
#include <iostream>
#include <string>
int main(int argc, char** argv)
{
std::cout << "Please give all strings seperated with white space (eg. ab ba cd) : ";
std::string input[12];
int i=0;
while(std::cin >> input[i])
{
if(input[i].compare("\n")) break;
i++;
}
//This will print contents of input[].
for(int k = 0 ; k < 12 ; k++)
{
std::cout << "input[" << k << "] = " << input[k] << std::endl;
}
return 0;
}
但不幸的是,这仅将第一个字符串(在本例中为“ab”)存储在数组的第一个索引中。
如果我注释掉 if(input[i].compare("\n")) break;将产生分段错误。我猜是因为我超出了为数组分配的内存并写在了我不应该写的地方。
据我目前所知,std::cin 将首先将 ab 放入数组的 input[0] 中,并将剩余的字符串 [ba cd] 保留在流中,然后在下一个循环中(在 i++ 之后)[ba cd] 仍将在流中,cin 不会从键盘进一步读取(因为流中有东西),它应该将字符串 ba 放在 input[1] 上,等等。如果我错了,请纠正我。
注意:这不是家庭作业。我的课程大约在 1 个月后开始。非常感谢任何帮助。提前致谢
【问题讨论】:
标签: c++