Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用c字符串读取.txt文件?_C++_Arrays_Char_Fstream_Ifstream - Fatal编程技术网

C++ 如何使用c字符串读取.txt文件?

C++ 如何使用c字符串读取.txt文件?,c++,arrays,char,fstream,ifstream,C++,Arrays,Char,Fstream,Ifstream,我正在为学校做一个项目,我需要阅读文件中的文本 听起来很简单,但我的教授对这个项目有一个限制:没有任何条件 (“不允许使用字符串数据类型或字符串库。”) 我一直通过使用字符数组来解决这个问题;但是,我不知道如何使用字符数组从文件中读入 这是另一个网站关于如何读取带有字符串的文件的示例 //读取文本文件 #包括 #包括 #包括 使用名称空间std; int main(){ 弦线; ifstream myfile(“example.txt”); 如果(myfile.is_open()) { whi

我正在为学校做一个项目,我需要阅读文件中的文本

听起来很简单,但我的教授对这个项目有一个限制:没有任何条件 (“不允许使用字符串数据类型或字符串库。”)

我一直通过使用字符数组来解决这个问题;但是,我不知道如何使用字符数组从文件中读入


这是另一个网站关于如何读取带有字符串的文件的示例

//读取文本文件
#包括
#包括
#包括
使用名称空间std;
int main(){
弦线;
ifstream myfile(“example.txt”);
如果(myfile.is_open())
{
while(getline(myfile,line))
{

cout
ifstream
有一个名为
get()
的方法,该方法将文件内容读入
char
数组。
get()
将指向数组的指针和数组大小作为参数,然后尽可能将数组填充到给定大小

返回
get()
后,使用
gcount()
方法确定已读取的字符数


您可以使用then和一个简单的逻辑循环,以
size
-chunks格式将文件内容重复读取到一个数组中,并将读取的所有chunks收集到一个数组中,或者
std::vector
ifstream
具有一个名为
get()的方法
将文件内容读入
char
数组。
get()
将指向数组的指针和数组大小作为参数;然后尽可能将数组填充到给定大小

返回
get()
后,使用
gcount()
方法确定已读取的字符数


您可以使用then和一个简单的逻辑循环,以
size
-chunks格式将文件内容重复读取到一个数组中,并将所有读取的chunks收集到一个数组中,或使用
std::vector
使用
cin.getline
。有关格式,请参阅此网站:

你可以这样写:

ifstream x("example.txt");
char arr[105];
while (x.getline(arr,100,'\n')){
    cout << arr << '\n';
}
ifstream x(“example.txt”);
char-arr[105];
while(x.getline(arr,100,'\n')){

无法使用
cin.getline
。有关格式,请参阅此网站:

你可以这样写:

ifstream x("example.txt");
char arr[105];
while (x.getline(arr,100,'\n')){
    cout << arr << '\n';
}
ifstream x(“example.txt”);
char-arr[105];
while(x.getline(arr,100,'\n')){

cout您可以使用
int i=0;while(scanf(“%c”)和&str[i++])!=EOF)
来判断文本输入的结束。
str
是您想要的字符数组include换行符,而
i
是输入大小

C++中,也可以使用<代码>(CIN,GETLILE())< /C> >每行循环读取:
istream&getline(char*s,streamsize n,char delim);
如下所示:

const int SIZE = 100;
const int MSIZE = 100;
int main() {
    freopen("in.txt", "r", stdin);
    char str[SIZE][MSIZE];
    int i = -1;
    while (cin.getline(str[++ i], MSIZE)) {
        printf("input string is [%s]\n", str[i]);
    }    
}

您可以使用
int i=0;while(scanf(“%c”)和&str[i++])!=EOF)
来判断文本输入的结束。
str
是您想要的字符数组include newline,而
i
是输入大小

C++中,也可以使用<代码>(CIN,GETLILE())< /C> >每行循环读取:
istream&getline(char*s,streamsize n,char delim);
如下所示:

const int SIZE = 100;
const int MSIZE = 100;
int main() {
    freopen("in.txt", "r", stdin);
    char str[SIZE][MSIZE];
    int i = -1;
    while (cin.getline(str[++ i], MSIZE)) {
        printf("input string is [%s]\n", str[i]);
    }    
}

如果没有字符串、只有空字符串“”或只有退出,您需要什么结果?@vinllen我在这里引用规则:“不允许使用字符串数据类型或字符串库。”如果你的老师真的把它放在所有的大写字母中,并且没有明确说明你不能使用
std::vector
,我会使用
std::vector
。看看文本文件包含什么?这很重要,因为如果它包含数字,那么你不需要字符串,如果它包含文本,那么你应该使用char*你需要什么结果d如果没有遇到字符串,只遇到一个空字符串“”,或者什么都没有,只有退出?@vinllen我在这里引用规则:“不允许使用字符串数据类型或字符串库。”如果你的老师真的把它放在所有的大写字母中,并且没有明确说明你不能使用
std::vector
,我会使用
std::vector
。看看文本文件包含什么?这很重要,因为如果它包含数字,那么你就不需要字符串,如果它包含文本,那么你应该使用char*,而的确切位置是什么e> istream&getline(char*s,streamsize n,char delim);
go?我有点困惑,
istream&getline(char*s,streamsize n,char delim);
go?我有点困惑