我在将字符串读入数组时遇到了一些问题。我的文件包含从页面水平向下运行的以下字符串。
文件:
dog
cat
rabbit
mouse
代码:
#include <string>
int i = 0;
using namespace std;
int main()
{
FILE * input1;
fopen_s(&input1, "C:\\Desktop\\test.dat", "r");
string test_string;
while (!feof(input1)) {
fscanf_s(input1, "%s", test_string);
i++;
}
return 0;
}
任何建议都将不胜感激,谢谢!
答案 0 :(得分:0)
您应该使用ifstream
和std::getline
现在,我将使用ifstream
包含fstream
以使用ifstream
。
#include <fstream>
打开文件:
要打开文件,请创建ifstream
的对象,并调用它的方法open
并将文件名作为参数传递。 ifstream
打开一个文件以从中读取。 (要在文件中写入,您可以使用ofstream
)
ifstream fin;
fin.open("C:\\Desktop\\test.dat");
或者您只需将文件名传递给构造函数即可创建ifstream
对象并打开文件。
ifstream fin("C:\\Desktop\\test.dat");
从文件中读取:
您可以使用流提取运算符(>>
)从文件中读取,就像使用cin
int a;
fin >> a;
使用上面创建的fin
(使用char
数组)从文件中读取行
char arr[100];
fin.getline(arr, 100);
更好的是,您应该使用std::string
代替char
数组,使用std::string
,您可以使用std::getline
string testString;
getline(fin, testString);
现在,让我们更改您的代码以使用ifstream
和getline
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
int i = 0;
ifstream input1;
input1.open("C:\\Desktop\\test.dat");
string test_string;
while (getline(input1, test_string)) {
i++;
}
return 0;
}