2015-12-17 7 views
0

У меня есть файлы с типом «Файл» Я имею в виду вместо «Resource \ sample.txt» их имя «Resource \ sample» Теперь я хочу их прочитать с C++ и сохранить их в строке. Вот мой код:C++: читать файлы, которые не имеют расширения

std::stringstream textBuffer; 
std::fstream fileHandle; 
std::string content 
fileHandle.open("Resource\sample", std::ios::in); 
textBuffer << fileHandle.rdbuf(); 
content = textBuffer.str(); 
fileHandle.close(); 

Но когда я компилирую это значение «содержания» переменная равна «». Помогите мне в этом. Заранее спасибо. Обратите внимание, что единственная проблема заключается в том, что файл не имеет расширения, такого как .txt или .dat или .bin.

+4

Имя файла не имеет значения, ищите ошибку в другом месте. – YSC

+0

Возможный дубликат [Читать весь ASCII-файл в C++ std :: string] (http://stackoverflow.com/questions/2602013/read-whole-ascii-file-into-c-stdstring) – user1810087

+0

программа работает правильно, если файл имеет расширение «.txt» –

ответ

10

Вы не смогли избежать обратной косой черты в строке имени файла.

fileHandle.open("Resource\\sample", std::ios::in); 
+1

это работает, спасибо, но в чем причина ?! –

+0

Потому что, если изменить адрес на «Resource \ sample.txt» и добавить расширение «.txt» в файл, все будет работать правильно. –

+0

Обратная косая черта - это символ побега, см. Http://stackoverflow.com/questions/10220401/c-string-literals-escape-character. Обратная косая черта означает, что компилятор не будет помещать обратную косую черту в строку, но символ, который зависит от того, что следует за обратным слэшем. Общая escape-последовательность - '\ n' для новой строки. «\ s» будет уменьшено до «s». Вы можете проверить это в отладчике или с printf. –