读书人

请问:关于文件输入输出的有关问题

发布时间: 2012-03-09 21:42:53 作者: rapoo

请教:关于文件输入输出的问题

ifstream in(infile.c_str());
in 和括号内的部分infile.c_str()分别表示什么意思呢?


[解决办法]
ifstream in(infile.c_str());
in 和括号内的部分infile.c_str()分别表示什么意思呢?
-----------
in 文件输入流

infile.c_str() string字符串infile返回指向字符串内容的指针。
[解决办法]
同ifstream in( "... ");一样

infile.c_str()就是返回C风格的字符串指针

A pointer to the C-style version of the invoking string. The pointer value is not valid after calling a non-const function, including the destructor, in the basic_string class on the object
[解决办法]
void fun(ifstream& ifile)
{
// ... do something with ifile.
}
int main()
{
ifstream in( "e:\project\result.txt ");
fun(in);
}
[解决办法]
讲的简单一点就是,string是一个字符串的类,定义了string infile;表示infile是string类的对象,在一些函数中比如strcpy(char*,const char*),第一个参数需要char *的类型,而你定义的infile是string类的对象,如果直接用strcpy(infile, "Thank you ");会提示你参数类型不对,因此需要把string类型转换成char*类型,而string类成员函数中提供了c_str()函数就是干这个的,因此有strcpy(infile.c_str(), "Thank you "),触类旁通如此而已~~
[解决办法]
string::c_str()返回值是const char*,所以不能strcpy(infile.c_str(), "abc ");
[解决办法]
谢谢楼上的提醒。

读书人网 >C++

热点推荐