Тестирование C ++ для \ n - PullRequest
       16

Тестирование C ++ для \ n

0 голосов
/ 11 февраля 2012

Я пытаюсь изучить C ++, и одним из упражнений является создание инструмента командной строки, который принимает вводимые пользователем данные и сохраняет их в массиве char до тех пор, пока пользователь не введет пустую строку. Я думаю, что у меня есть скелет правильно, но по какой-то причине мое время работает непрерывно. Мой код выглядит следующим образом:

    char a[256];

    //while the first character isn't a new line
    while (a[0] != '\n') {

        //get the char array
        cin >> a; 

        cout << a;

    }

Любая помощь будет наиболее ценной.

Ответы [ 2 ]

3 голосов
/ 11 февраля 2012

Вы не можете обнаружить новые строки с operator>>. Для большинства типов он использует пробелы в качестве разделителя и не проводит различий между пробелами, символами табуляции и переводами строки. Вместо этого используйте getline:

for (std::string line; std::getline(std::cin, line); )
{
    if (line.empty())
    {
        // if the line is empty, that means the user didn't
        // press anything before hitting the enter key
    }
}
1 голос
/ 11 февраля 2012

для начинающих: используйте std :: string вместо массива char и выберите полезные имена переменных.

#include <iostream>
#include <string>

using namespace std;

int main() 
{
    for(string text;getline(cin, text);) {
        if (!text.empty()) {
            cout << text << endl;
        } else {
           break;
        }      
    } 
}
...