2017-02-10 2 views
0

У меня проблема:C++ Выход в терминале не создает новую строку

Мой код на C++ выглядит следующим образом.

int main() 
{ 
std::string String; 

int rows = 0; 
int cols = 0; 

std::getline (std::cin,String); 

std::cin >> rows; 
std::cin >> cols; 

std::cout << "Enter a fancy string: " << String << std::endl; 
std::cout << "Enter the number of rows: " << rows << std::endl; 
std::cout << "Enter the number of cols: " << cols << std::endl; 

std::string ArrayofStrings; 
    for(int x = 0; x<rows; x++){ 
     ArrayofStrings = ""; 
     for (int y = 0; y < cols; y++) { 
      ArrayofStrings += String; 
     } 
     std::cout << ArrayofStrings << std::endl;   } 
// std::cout << std::endl; 
return 0; 

}

Короче говоря, он считывает в строках и печатает массив заданной строки с заданными размерами. Но когда я запускаю его на Linux терминал, вывод выглядит следующим образом:

Enter a fancy string: 4 
Enter the number of rows: 5 
Enter the number of columns: 5 
44444 
44444 
44444 
44444 
44444[[email protected]] (3)$ 

Но я не могу сделать, что [enkhtaiv @ королевском-10] линукс началу текста от линии независимо от того, что. Я пробовал std::endl, "\n" оба, но они, похоже, не работают.

Что меня озадачивает, так это то, что эта программа отлично работает на IDE, но когда я ее компилирую и запускаю на терминале Linux, эта проблема сохраняется. Я новичок в терминах C++ и linux, поэтому заранее извиняюсь, если это совершенно тривиальный вопрос.

ответ

0

Решение будет ... добавить второй EOL.

Вы не сказали нам, что происходит, когда вы раскомментировать

std::cout << std::endl; 

в конце кода. Если вы, наконец, в конечном итоге чтение

44444 
[[email protected]] (3)$ 

Вы ожидаете, то это может означать, что оболочка не настроена правильно, и будет «съедать» в \n предыдущей строки. Попробуйте изменить PS1 на .bashrc

Смежные вопросы