.txt文件到char数组?

时间:2016-09-22 02:32:47

标签: c++ arrays iostream

我一直在尝试使用以下文本读取.txt文件:

  

调试是第一次编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您不够聪明,无法对其进行调试。 - Brian W. Kernighan *

但是当我尝试将.txt文件发送到我的char数组时,除了“Debugging”这个词之外的整个消息打印出来,我不知道为什么。这是我的代码。它必须是我看不到的简单的东西,任何帮助都会非常感激。

#include <iostream>
#include <fstream>

using namespace std;

int main(){

char quote[300];

ifstream File;

File.open("lab4data.txt");

File >> quote;


File.get(quote, 300, '*');


cout << quote << endl;
}

2 个答案:

答案 0 :(得分:0)

该行

File >> quote;

将第一个单词读入您的数组。然后下一次调用File.get复制您已阅读的单词。所以第一个字就丢失了。

您应该从代码中删除上面一行,它才能正常运行。

我通常建议使用std::string而不是char数组来阅读,但我可以看到ifstream::get不支持它,最接近的是streambuf

要注意的另一件事是检查您的文件是否正确打开。

以下代码可以做到这一点。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(){

    char quote[300];
    ifstream file("kernighan.txt");

    if(file)
    {
        file.get(quote, 300, '*');
        cout << quote << '\n';
    } else
    {
        cout << "file could not be opened\n";
    }    
}

ifstream对象可转换为bool(或c ++ 03世界中的void*),因此可以针对真实性进行测试。

答案 1 :(得分:0)

char读取方法的简单char(未测试)

包括

#include <fstream>

using namespace std;

int main()
{ 
    char quote[300];
    ifstream File;
    File.open("lab4data.txt");
    if(File)
    {
         int i = 0;
         char c;
         while(!File.eof())
         {
             File.read(&c,sizeof(char));
             quote[i++] =c;
         }   
         quote[i]='\0';          
         cout << quote << endl;
         File.close();
    }

}