Итак, я написал проект C++, который считывает файл в строку.
//func to read file into string
std::string readFile( const std::string& fileName )
{
std::ifstream ifs( fileName );
return std::string((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>()));
}
//func call in main
std::string text = readFile("test.txt");
Это код, который я использую для этого.
Я использую CLion для написания своего кода. Я изменил стандартный компилятор на clang++. Когда я запускаю main.cpp непосредственно в CLion, программа не может прочитать файл. Кода ошибки нет, но при отладке программы пишет, что параметр fileName имеет неполный тип.
Когда я компилирую main.cpp в терминале с помощью
clang++ -std=c++14 main.cpp -o histogram
а затем запустите его, он может прочитать файл, и программа работает так, как должна.
Почему в терминале работает, а в CLion нет?
Командная строка clang++ -std=c++14 main.cpp -o histogram создает исполняемый файл в том же каталоге, что и исходный файл. CMake (CLion) создает исполняемый файл в другом каталоге.
Программа C++ будет читать файл относительно рабочего каталога. Установите параметр рабочего каталога в вашей среде IDE в качестве исходного каталога.





Как сказано в комментариях, CMake создал подпапку, в которой находился выходной файл. Файл test.txt находился в исходной папке и, следовательно, находился вне допустимого диапазона. Когда я сменил рабочий каталог на исходный, программа заработала.
Спасибо за быструю помощь.
"когда я отлаживаю программу, она говорит, что параметр fileName имеет неполный тип". Это не было показано в вашем коде, но вы
#include <string>?