如何在C ++中的2d char数组中输入不同长度的字符串?

时间:2016-02-17 19:32:54

标签: c++ arrays string multidimensional-array variable-length

我需要输入4个字符串,因此指定了需要输入的字符串数,但每个字符串的长度不同。因为我必须执行特定于字符的操作,所以它必须是2d char数组,如果我没有错的话。我怎样才能用c ++编写代码。

参考:问题在于spoj

输入:

4          // number of test cases
your 
progress 
is 
noticeable

如何在C ++中输入?请帮助清除这背后的概念。

2 个答案:

答案 0 :(得分:3)

C ++标准库提供了类std::string,您应该选择该类,而不是char*char[]和C-ish,不安全的东西。

然后,您可以使用std::cinstd::istream::operator>>或您想要使用的任何内容std::getlinedepending on what you want to read输入流中读取这些字符串(在您的情况下)。< / p>

现在,要将这些字符串存储在合适的数据结构中,数组似乎是合适的。 C ++标准库为此提供了各种容器,完全取决于您希望如何存储/访问字符串。示例是std::vector(动态可修改的数组),std::array(更安全的数组替代),std::deque(双端队列),std::forward_list(单链表),和std::list(双重链表)。这些数据结构提供了附加项目,删除项目,插入项目等的适当操作,具体取决于特定容器的效率以及它们是否实施。 对于通用任务,我建议std::vector

答案 1 :(得分:0)

如果你真的想,你可以使用malloc()初始化一个字符数组,然后realloc()sizeof(char)乘以x个字符。您甚至可以添加一个标记来分隔您想要输入的各行。

请确保您不要忘记在代码末尾释放()数组。