Как бы вы прочитали строку, если она не длиннее 20 символов и может содержать пробелы в C ++? Например, у меня есть такой файл:
3
Namama 4 5 12
Cool 4 2 34
Not So Cool 4 2 45
Я хочу написать это самым простым способом. И я бы предпочел использовать только C ++ (без C-штуковин) в этом случае. Это означает, что я хочу сохранить его в std :: string.
Я мог бы использовать istream :: get или istream :: getline , но тогда я должен избегать символов новой строки. Это проблематично (и код, который я пишу, будет показан новичкам).
Как вы решаете эту проблему?
Edit:
Как меня спросили, я собираюсь рассказать вам, что я пытался, но я не думаю, что это будет хорошо. Я не новичок в C ++, и обычно я бы использовал что-то вроде istream :: get и массив символов, но для некоторых людей удаление символов новой строки может показаться слишком сложным.
Итак ... Либо чтение массива символов, либо std :: string с использованием istream :: operator >> завершается неудачно, потому что прекращается чтение, когда они видят пробел (и я могу читать несколько слов). Это означает, что следующий код не работает:
char name[21];
std::cin >> name;
или ...
std::string name;
std::cin >> name;
Другое дело, что символы новой строки отличаются от системы к системе, и фактически Windows использует два из них по умолчанию, и я попытался использовать istream :: ignore с 2 в качестве аргумента в Windows, и это было Единственный способ игнорировать новую строку, и я пришел к выводу, что это потому, что Windows использует два символа для знака новой строки. Это означает, что он не будет работать в Linux и должен быть более сложным ... Опять же - плохо для начинающих.