gpt4 book ai didi

c++ - 尝试使用非常量字符串通过 freopen 创建输出文件

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:40 25 4
gpt4 key购买 nike

我正在尝试创建一个文件,其名称是一个字符串常量,但是一个由常量字符串“List”组成的字符串,一个整数++ 一个扩展名。这是我的代码:

#include <iostream>
#include <vector>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;

int main (){
int cont=0;

std::string result;
std::string name = "Lista";
std::string ext = ".txt";

char numstr[21]; // enough to hold all numbers up to 64-bits
sprintf(numstr, "%d", cont);
result = name + numstr+ext;

freopen (result, "w", stdout);
cout<<result<<endl;
return 0;
}

当我尝试构建时,出现以下错误:

error: cannot convert std::string' toconst char*' for argument 1'
to
FILE* freopen(const char*, const char*, FILE*)'|

我该如何解决这个问题?

最佳答案

由于编译器错误说明没有从 std::stringchar const* 的隐式转换(即 c-style-string 在这种情况下)。

尽管 std::string 有一个名为 c_str成员函数这将生成一个 null-terminated 字符串并返回一个指向它的指针,这在处理遗留 C 函数时非常有用。


例子和注释

freopen (result.c_str (), "w", stdout);

char const * p = result.c_str ();

请注意,如果您对托管进行任何修改,std::string::c_str 指向的 c-style-string 将失效对象(在本例中为 result),因此将返回的值存储在非临时变量中通常是不明智的。


如果您点击以下链接,您可以阅读有关该功能的更多信息:

关于c++ - 尝试使用非常量字符串通过 freopen 创建输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com