2014-12-09 3 views
0

В следующем коде заголовок и тело обрезаются после одного слова. Я думал, что строки могут содержать несколько слов? Может кто-то это прояснит. СпасибоПочему моя строка ограничена одним словом? (C++)

#include <fstream.h> 
#include <iostream.h> 
#include <string> 

using namespace std; 

string data, newtitle, body; 

ofstream outfile; 

int main() 
{ 
    cout << "enter title of note: "; 
    cin >> newtitle; 

    cout << "enter body of note: "; 
    cin >> body; 

    data = newtitle + ".dat"; 

    outfile.open(data.c_str(), ios::out); 
        outfile << body << endl; 
    outfile.close();    

system("pause"); 
} 
+3

'std :: string' может содержать несколько слов. 'cin >> newtitle;' остановит сканирование, когда найдет символ пробела. –

+0

Ошибка новичков, обвиняя строку, не учитывая, что то, как вы ее заселяете, может быть виновато! –

ответ

1

cin.operator>> по умолчанию разделит любые пробелы (включая пробелы). Вы можете использовать getline, чтобы получить всю строку ввода:

cout << "enter title of note: "; 
getline(cin, newtitle); 

cout << "enter body of note: "; 
getline(cin, body); 
+0

Преобразование из апстрима в строку меня сбило с толку. Теперь мои навыки программирования вернулись с остальной частью 21-го века. благодаря – humdood

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