【问题标题】:Reading in to a character array of unknown size [duplicate]读入未知大小的字符数组[重复]
【发布时间】:2013-12-18 14:23:25
【问题描述】:

如何在不知道用户将输入的字符串大小的情况下将 c 字符串读入字符数组?

【问题讨论】:

  • 到目前为止你写了什么? (按需调整大小的字符数组?什么?)
  • 所以现在我们应该做出决定了。这是 C XOR C++ 吗?
  • @ebyrob 如果 XOR 让您大吃一惊,那么该是 blow it even more 的时候了。 C 和 C++ 是非常不同且不兼容的语言。 C 代码应该以 C 风格编写,并且应该使用 C 编译器进行编译。 C++ 代码应该以 C++ 风格编写,并且应该使用 C++ 编译器进行编译。这两种语言共享一个狭窄的公共子集有历史原因,但这并不意味着可以/应该/尝试编写“C/C++”代码(即混合两种语言)。
  • @ebyrob 嗯...什么? VS在抱怨什么?怎么会,甚至?我什么也没说。完全没有。我不知道/不明白你为什么建议我这样做。而且我知道它不尊重 C++ 标准,事实上这并不让我感到惊讶(微软在实施标准方面做得很差)。
  • @H2CO3 是的,但比新的 GCC 版本少...

标签: c arrays cstring


【解决方案1】:

如果没有任何代码或对您的问题的进一步描述,很难知道您要实现什么目标,但是,以下之一可能适合您的需求:

  1. 使用您知道的某个最大大小的预分配数组大于将要输入的字符数。

  2. 创建一个空的 std::string,然后对输入的每个字符使用字符串“+=”运算符。然后可以使用 c_str() 方法转换回数组。

【讨论】:

  • 第二个选项会更好,只要读入std::string,因为它支持这一点。但是,我敢打赌它会破坏 OP 所写内容的目的。
  • @chris 甚至不是 C。
  • @Chris,我认为您在做出我不愿意做出的假设,那就是输入到达的方式。每个字符的输入(输入之间的延迟可变)在您可能没有想到的许多系统中很常见,所以我认为仅仅读取字符串并不能涵盖所有内容。鉴于问题含糊不清,我的回答足够笼统,以便在这种情况下有用。
  • @MikeD,你引起了我的兴趣。
  • 另外,我来这个问题是因为它被标记为 C++,虽然我现在没有看到:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2020-11-13
  • 2018-08-31
  • 2013-11-28
相关资源
最近更新 更多