我一直在尝试使用以下文本读取.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;
}
答案 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();
}
}