小休克 发表于 2019-1-14 23:21:52

string 字符串传递调用问题

本帖最后由 小休克 于 2019-1-14 23:22 编辑

我想读取一个1.txt,文件,则有以下代码是没问题的
viod main(){
    fstream in("1.txt");
}
但是如果改成如下这样就不行了,报错
viod main(){
    string strs="1.txt";
    fstream in(strs);
}
这是为什么,怎么解决?主要是我想把fstream 单独作为一个函数使用,就像下面那样
void read( string strs){
    fstream in( strs);
}
但是就像我说的那样,他是错误的,该如何更改?

ba21 发表于 2019-1-14 23:51:35

char strs[] = "1.txt";

人造人 发表于 2019-1-14 23:54:54

会报错吗?

#include <fstream>
#include <string>

int main()
{
        std::string filename = "1.txt";
        std::fstream in(filename);
        return 0;
}

小休克 发表于 2019-1-15 00:36:00

人造人 发表于 2019-1-14 23:54
会报错吗?

会报错,二楼的方法可以

小休克 发表于 2019-1-15 00:36:41

ba21 发表于 2019-1-14 23:51
char strs[] = "1.txt";

太好了,可以解决问题,这是为什么么 /手动笑哭

人造人 发表于 2019-1-15 00:58:50

小休克 发表于 2019-1-15 00:36
会报错,二楼的方法可以

会报错吗?贴一下你的报错信息

ba21 发表于 2019-1-15 11:08:15

小休克 发表于 2019-1-15 00:36
太好了,可以解决问题,这是为什么么 /手动笑哭

看函数说明不就知道了

小休克 发表于 2019-1-15 11:36:17

人造人 发表于 2019-1-15 00:58
会报错吗?贴一下你的报错信息

我用的是VC6.0,可能版本限制吧

error C2664: '__thiscall std::basic_fstream<char,struct std::char_traits<char> >::std::basic_fstream<char,struct std::char_traits<char> >(const char *,int)' : cannot convert parameter 1 from 'class std::ba
sic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
      No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
执行 cl.exe 时出错.

人造人 发表于 2019-1-15 12:18:39

小休克 发表于 2019-1-15 11:36
我用的是VC6.0,可能版本限制吧

嗯,应该是vc6太老了

#include <fstream>
#include <string>

int main()
{
      std::string filename = "1.txt";
      std::fstream in(filename.c_str());
      return 0;
}
页: [1]
查看完整版本: string 字符串传递调用问题