【问题标题】:writing in a user-defined .txt file写入用户定义的 .txt 文件
【发布时间】:2015-10-06 19:14:25
【问题描述】:

我用来写入 .txt 文件的基本语法是这样的:

ofstream myfile;
myfile.open ("data.txt", ios::trunc);
outfile<<"writing";

现在,假设我要让用户决定应该访问哪个文件,可以通过字符串来完成吗?

#include <iostream>
#include <fstream>
using namespace std;
int main (){
    ofstream myfile;
    string filename;
    char x;
    cin>>x;
    if (x==1)
        filename="data2.txt";
    myfile.open (filename, ios::trunc);
    myfile<<"writing";
    return 0;
}

我已经对此进行了测试,但它不起作用。我的问题是:有可能做这样的事情吗?如果是,如何?当我编译它时,我得到的错误如下:

undefined reference to 'std::basicofstream<char, std::char_traits<char> >::open(std::string const&, std::_Ios_Openmode)'

我不明白是什么原因造成的。

【问题讨论】:

  • 指定“无效”。没有编译?如果是这样,请发布错误。没链接?如果是这样,请发布错误。表现不如预期?如果是这样,请发布预期和观察到的行为。
  • 你是对的,我很抱歉。我对其进行了编辑,还包含了整个代码。
  • 完整的错误信息是什么?
  • 这是在 Linux 上,你是用 gcc 而不是 g++ 编译的吗?
  • @melpomene 我是菜鸟导致了这种情况。我正在使用 codeblocks 平台,因为它对初学者友好。我选择构建,然后构建并运行。之后我收到此错误,是的,这是完整的消息。

标签: c++ gcc windows-7


【解决方案1】:

您的错误是找不到使用std::string 的open 方法。

试试这个:

myfile.open(filename.c_str(), ios::trunc);

某些版本的 C++ 不允许 std::string 用于 open 方法,因此您必须使用 std::string 的 c_str() 方法。

【讨论】:

  • 我现在可以编译它,但由于某种原因,.txt 文件仍然是空的。你知道是什么原因造成的吗?
  • 我建议使用 debugger 来了解您的代码是如何执行的。
  • 我能够修复它:)。感谢您的洞察力。
  • 实际上,找到了声明,但没有找到定义,这表明我的工具链已损坏。
【解决方案2】:

你应该添加一个else 分支,因为如果x 不等于1 open 没有任何东西可以打开。

您也忘记在第二个 sn-p 中声明 ofstream myfile;。也许这就是它不起作用的原因(它甚至不应该编译)。

【讨论】:

  • 对不起,我只包含了一段代码,现在已经完成了
猜你喜欢
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 2012-03-04
  • 1970-01-01
相关资源
最近更新 更多