почему мой std :: string обрезается? - PullRequest
1 голос
/ 15 сентября 2010

Я инициализирую строку следующим образом:

std::string myString = "'The quick brown fox jumps over the lazy dog' is an English-language pangram (a phrase that contains all of the letters of the alphabet)";

и myString обрезается следующим образом:

'Быстрая коричневая лиса перепрыгивает через ленивый пес »- англоязычный панграмма (фраза, содержащая

Где я могу установить ограничение размера? Я безуспешно пробовал следующее:

std::string myString;
myString.resize(300);
myString = "'The quick brown fox jumps over the lazy dog' is an English-language pangram (a phrase that contains all of the letters of the alphabet)";

Большое спасибо!

Ответы [ 4 ]

1 голос
/ 05 ноября 2011

Конечно, это был просто отладчик (xcode). Я только начинаю работать с xcode / c ++, поэтому большое спасибо за быстрые ответы.

0 голосов
/ 15 сентября 2010

Ты уверен?

kkekan> ./a.out 
'The quick brown fox jumps over the lazy dog' is an English-language pangram (a phrase that contains all of the letters of the alphabet)

Нет веских причин, почему это должно было произойти!

0 голосов
/ 15 сентября 2010

При печати или отображении текста устройство вывода буферизует вывод. Вы можете сказать ему, чтобы очищать буферы (отображать весь оставшийся текст) путем вывода '\ n' или использования std::endl или выполнения метода flush():

#include <iostream>
using std::cout;
using std::endl;

int main(void)
{
  std::string myString =
    "'The quick brown fox jumps over the lazy dog'" // Compiler concatenates
    " is an English-language pangram (a phrase"     // these contiguous text
    " that contains all of the letters of the"      // literals automatically.
    " alphabet)";
  // Method 1:  use '\n'
  // A newline forces the buffers to flush.
  cout << myString << '\n';

  // Method 2:  use std::endl;
  // The std::endl flushes the buffer then sends '\n' to the output.
  cout << myString << endl;

  // Method 3:  use flush() method
  cout << myString;
  cout.flush();

  return 0;
}

Для получения дополнительной информации о буферах выполните поиск переполнения стека для «буфера вывода C ++».

0 голосов
/ 15 сентября 2010

Попробуйте следующее (в режиме отладки):

assert(!"Congratulations, I am in debug mode! Let's do a test now...")
std::string myString = "'The quick brown fox jumps over the lazy dog' is an English-language pangram (a phrase that contains all of the letters of the alphabet)";
assert(myString.size() > 120);

Не удалось (второе) утверждение?

...