открытие файла с пробелами в имени

У меня проблема с открытием файлов в C ++, в имени которых есть пробелы. Например, чтобы открыть файл read me.txt,

Это код, который я до сих пор включал в себя одну команду, которая читает файл и выводит количество слов на консоль:

string choice, word, fname;
ifstream input;
int l, count = 0;

if(choice == "wc" || choice == "WC" || choice == "Wc")
{
getline(cin, fname);
input.open(fname.c_str());
cout << fname << endl;
if(input.fail())
{
cerr << " Error: failed to open the file: " << fname << endl;
input.clear();
}
else
{
w = 0;
while (input >> word)
w++;
input.close();
count = w;
cout << fname << " has a Word Count of: " << count << " words \n" << endl;
}
}

Я знаю, что функция потока c_str() не может прочитать более одной строки после пробела. Я думал об использовании подстроки, но я не совсем уверен, как поступить. Не могли бы вы, ребята, помочь мне?

-1

Решение

Вы пробовали это (http://www.cplusplus.com/forum/beginner/39687/):

В литеральной строке символ «\» интерпретируется как escape-код, позволяющий встраивать символы, которые в противном случае не могут быть введены или недоступны для печати. Например, чтобы вставить новую строку в буквальную строку, вы не можете просто нажать клавишу Enter при вводе буквенной строки, потому что редактор ответит, фактически начав новую строку. Таким образом, вместо этого вы набираете «\ n», то есть «Это в первой строке \ n Это во второй строке». Чтобы ввести символ «\», вы должны выйти из него, введя две косые черты. Первая косая черта — это escape-символ, а вторая косая черта — это внедряемый символ косой черты.

пример: C: \ Program Files \ filename.txt

РЕДАКТИРОВАТЬ:
Пользователь не вводит escape-символы, а только имя файла. Затем программа должна иметь дело с пробелами и обратной косой чертой. \ n обозначает новую строку, но она состоит из escape-символа, за которым следует символ n.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]