简体   繁体   English

如何解决“std::basic_ofstream <char, std::char_traits<char> >::打开(std::string&)"</char,>

[英]How to solve "std::basic_ofstream<char, std::char_traits<char> >::open(std::string&)"

I get an error about std::basic_ofstream<char, std::char_traits<char> >::open(std::string&) when compiling this code:编译此代码时,我收到有关std::basic_ofstream<char, std::char_traits<char> >::open(std::string&)的错误:

FileEXt = ".conf";
const char* FileEX = FileEXt.c_str();

const char* File = Uname + FileEX;

string File = Uname + FileEXt;

ofstream outFile;
outFile.open(File);

Full code:完整代码:

LPCSTR lpPathName = ".\\DB";

SetCurrentDirectoryA(lpPathName);

string Uname, Pword;
cout << "Please enter a name: ";
cin >> Uname;

cout << '\n' << '\n';
cin >> Pword;
            
system("CLS");
cout << "Username: " << Uname << '\n' << "Password: " << Pword << '\n';

const char* FileEXt = ".conf";
const char* Unames = Uname.c_str();
const char* FileEX = FileEXt;

string File = Uname + FileEXt;

ofstream outFile;
outFile.open(File);

if ( outFile.fail() )
{
    outFile << Uname << '\n' << Pword;
    outFile.close();
}
else
{
    cout << Uname << " already exists!" << '\n';
    Sleep(3000);
    return 0;
}

This code is supposed to create a file that stores a name in the DB directory.此代码应该创建一个文件,将名称存储在 DB 目录中。

You are passing a std::string to ofstream::open() .您正在将std::string传递给ofstream::open() Prior to C++11, open() did not accept a std::string as input, only a const char* pointer, eg:在 C++11 之前, open()不接受std::string作为输入,只接受const char*指针,例如:

outFile.open(File.c_str());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 没有用于调用`std :: basic_ofstream的匹配函数 <char, std::char_traits<char> &gt; :: basic_ofstream(的std :: string&)” - no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(std::string&)' 为什么这个编译错误? - 没有匹配函数来调用&#39;std :: basic_ofstream <char> ::打开(的std :: string&)” - why this compiler error? - no matching function for call to 'std::basic_ofstream<char>::open(std::string&)' ostream和运算符std :: basic_string <char, std::char_traits<char> ,std :: allocator <char> &gt;? - ostream and operator std::basic_string<char, std::char_traits<char>, std::allocator<char>>? main.cpp || 未定义对`MyClass :: loadDatas(std :: basic_string的引用 <char, std::char_traits<char> ,std :: allocator <char> &gt;)&#39;| - main.cpp|| undefined reference to `MyClass::loadDatas(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'| C++ std::basic_string/char_traits 特化 - C++ std::basic_string/char_traits specialization 未定义对`librarymanager :: getBook(std :: basic_string的引用 <char, std::char_traits<char> ,std :: allocator <char> &gt;) - undefined reference to `librarymanager::getBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) 1 IntelliSense:没有合适的构造函数可以从“bool”转换为“std :: basic_string” <char, std::char_traits<char> ,std :: allocator <char> &gt;” - 1 IntelliSense: no suitable constructor exists to convert from “bool” to “std::basic_string<char, std::char_traits<char>, std::allocator<char>>” 未定义对`readVector(std :: __ cxx11 :: basic_string的引用) <char, std::char_traits<char> ,std :: allocator <char> &gt;)” - undefined reference to `readVector(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' “ str2Int(std :: basic_string <char, std::char_traits<char> ,std :: allocator <char> &gt; const&)”,引用自: - “str2Int(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)”, referenced from: 未定义模板 &#39;std::basic_string 的隐式实例化<char, std::char_traits<char> , 标准::分配器<char> &gt;&#39; - Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM