Advertisement
IzhanVarsky

Untitled

Mar 26th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. char *resize(const char *str, size_t size, size_t new_size) {
  2.     char *newStr = new char[new_size];
  3.     for (int i = 0; i < min(size, new_size); ++i) {
  4.         newStr[i] = str[i];
  5.     }
  6.     delete[] str;
  7.     return newStr;
  8. }
  9.  
  10. char *getline() {
  11.     size_t size = 10;
  12.     char *str = new char[size];
  13.     size_t curLen = 0;
  14.     char c;
  15.     cin.get(c);
  16.     while (true) {
  17.         if (c == '\0'){
  18.             if (curLen != 0) {
  19.                 break;
  20.             }
  21.             return nullptr; // не пашет если в конце непробельный или не \n и застревает
  22.         }
  23.         if (c == '\n') {
  24.             break;
  25.         }
  26.         if (curLen == size - 1) {
  27.             str = resize(str, size, size * 2);
  28.             size *= 2;
  29.         }
  30.         str[curLen] = c;
  31.         curLen++;
  32.         cin.get(c);
  33.     }
  34.     str[curLen] = '\0';
  35.     return str;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement