【问题标题】:Getline puts program on pauseGetline 暂停程序
【发布时间】:2016-05-04 15:48:40
【问题描述】:

当“文本”大于大约 280 个数字时,程序等待... 对于 280 个数字的任何“文本”,它都可以正常工作。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string text;
    getline (cin, text);
    cout << text;
}

例如:

167 214 280 265 278 292 196 249 242 297 7 125 151 4 25 172 293 157 290 277 240 155 201 90 44 230 94 185 184 65 189 159 74 30 59 279 169 136 142 80 46 124 66 203 138 182 171 241 267 294 32 233 165 39 149 181 156 170 137 96 130 238 239 37 298 48 288 6 100 174 268 144 272 109 275 190 160 154 57 15 83 16 183 236 95 97 147 215 77 34 219 91 68 81 52 207 187 105 229 153 243 20 71 53 3 102 259 13 115 123 98 193 87 208 120 221 113 261 126 178 111 133 255 36 287 93 228 263 47 227 188 191 295 205 28 82 244 152 281 166 58 192 162 60 256 76 50 179 235 247 282 118 88 212 112 21 273 141 222 56 209 134 237 2 121 104 23 150 194 146 24 300 64 92 78 79 116 108 286 223 70 61 67 284 19 33 173 216 42 164 29 199 63 69 140 132 211 101 103 119 106 198 296 168 224 158 232 27 254 246 262 110 250 225 135 86 26 51 180 231 114 257 75 202 217 251 218 18 89 213 85 220 117 266 206 127 234 197 291 248 14 258 129 226 148 260 84 204 73 299 31 264 276 107 11 145 1 54 200 49 72 177 62 45 163 271 274 270 195 186 252 139 99 55 41 38 253 285 5 176 283 22 122 161 17 175 131 43 289 269 9 40 245 12 10 143 35 210 128 8

【问题讨论】:

  • 您能否提供一个锁定程序的示例输入?你的代码看起来不错。另外,什么平台和编译器?
  • 你真的数过吗?你能告诉我们吗?
  • 我在 MacBook 上使用 Xcode
  • 我添加了一个包含 300 个数字的示例输入,在我的代码之后锁定了程序。
  • 无法在 Win10 + VS2015 上重现,应该是平台特定的错误/限制。可能甚至与 C++ 无关。

标签: c++ buffer cin getline


【解决方案1】:

我可以想象您的代码暂停的唯一原因是您是否过度填充了为字符串分配的空间。这似乎极不可能。基于 size_t 的大小对字符串的最大大小有限制,但通常为 size_t 分配 32 位...这意味着字符串的最大字符数通常为 2^32 - 1 个字符。显然,您还远远没有达到那个长度。

在正常情况下,您更有可能受到系统可以为字符串分配的空间量的限制。这取决于可用内存量以及系统如何分解它。

这两种情况似乎都极不可能。

在这种情况下,问题很可能是您的编译器或平台的问题...

你拿这么长的字符串的原因是什么?您是否考虑过其他方法,例如从文本文件中读取整数?您可以通过从文本文件中单独读取整数来使用向量以更有条理的方式存储整数,只是一个想法。

【讨论】:

  • 谢谢 ltnewberry。你用我的例子用 300 个数字尝试过你的编译器吗?我同意你的所有言论,但仍然需要了解我的问题。
  • 嗨奥利弗,我自己试过了,没有问题。我在 Windows 机器上使用 Code::Blocks 运行它
  • 嗨 ltnewberry。感谢您的尝试。 MacBook 上的 Xcode 是否有任何特定限制?
  • 老实说,我不知道。我从未使用过 Xcode。您可以考虑发布一个带有 Xcode 标签的关于您的问题的问题。也许其他人会更幸运地理解这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 1970-01-01
相关资源
最近更新 更多