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



我需要输入 4 个字符串,因此指定了需要输入的字符串数,但每个字符串的长度不同。由于我必须执行特定于字符的操作,如果我没记错的话,它必须是 2d 字符数组。我如何在 c++ 中对此进行编码。

参考:问题在 spoj 中

输入:

4          // number of test cases
your 
progress 
is 
noticeable

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

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

然后,您可以使用 std::istream::operator>>std::getline 或任何您想要使用的内容从std::cin输入流中读入这些字符串(在您的例子中(,具体取决于您要读取的内容。

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

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

只要确保你不要忘记在代码末尾释放((数组。

最新更新