Getline让节目暂停

时间:2016-05-04 15:48:41

标签: c++ buffer cin getline

" text"程序等待大于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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

你接受如此长串的理由是什么?您是否考虑过其他方法,例如从文本文件中读取整数?您可以使用向量以更有条理的方式存储整数,方法是从文本文件中单独读取它们,只是一个想法。

相关问题